Greasy Fork is available in English.

煎蛋侠

为煎蛋jandan.net提供左右方向键快捷翻页、上下方向键快捷切图、鼠标悬停显示大图、屏蔽指定用户发言等功能

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         煎蛋侠
// @name:en      Jandan Hero
// @name:zh-TW   煎蛋俠
// @namespace    hoothin
// @version      2.0
// @icon         http://cdn.jandan.net/static/img/favicon.ico
// @description  为煎蛋jandan.net提供左右方向键快捷翻页、上下方向键快捷切图、鼠标悬停显示大图、屏蔽指定用户发言等功能
// @description:en  Tools for jandan.net
// @description:zh-TW  為煎蛋jandan.net提供左右方向鍵快捷翻頁、上下方向鍵快捷切圖、鼠標懸停顯示大圖、屏蔽指定用戶發言等功能
// @author       hoothin
// @match        http*://jandan.net/*
// @match        http*://i.jandan.net/*
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_deleteValue
// @grant        GM_addStyle
// @run-at       document-idle
// ==/UserScript==

(function() {
    'use strict';
    var timer,tempImg=document.createElement("img"),getImgWH=function(img,callBack){
        if(timer)clearInterval(timer);
        tempImg.src="";
        tempImg.src=img.src;
        var check=function(){
            if(tempImg.width>0 || tempImg.height>0){
                if(timer)clearInterval(timer);
                callBack(tempImg.width,tempImg.height);
                return true;
            }else{
                return false;
            }
        };
        var geted=check();
        if(!geted){
            timer = setInterval(check,40);
        }
    };

    document.addEventListener("keyup", function(e) {
        if(/INPUT|TEXTAREA/.test(document.activeElement.tagName))return;
        switch(e.keyCode){
            case 37://←
                var next=document.querySelector("span#nav_next>a");
                if(next)next.click();
                break;
            case 39://→
                var pre=document.querySelector("span#nav_prev>a");
                if(pre)pre.click();
                break;
            case 38://↑
                if(/jandan\.net\/(ooxx|pic|girl|top|zoo|dzh)/.test(location.href)){
                    moveToPic(false);
                }
                break;
            case 40://↓
                if(/jandan\.net\/(ooxx|pic|girl|top|zoo|dzh)/.test(location.href)){
                    moveToPic(true);
                }
                break;
        }
    });

    var pic,pics,currentPic,i;
    var isHttps=location.protocol=="https:",selector;
    var isTucao=document.querySelector(".tucao-list")!=null;
    var isTop=location.href.indexOf("jandan.net/top")!=-1;
    var isMobile=location.href.indexOf("i.jandan.net")!=-1;

    function moveToPic(d){
        pics=document.querySelectorAll(".commentlist .text img,.tucao-list img");
        if(!currentPic && pics)currentPic=pics[0];
        else{
            for(i=0;i<pics.length;i++){
                pic=pics[i];
                if(isTucao){
                    if(($(window).scrollTop() + $(window).height() / 2) < ($(pic).offset().top + $(pic).outerHeight()) &&
                       ($(window).scrollTop() + $(window).height() / 2) > $(pic).offset().top){
                        currentPic=pic;
                        break;
                    }
                }else{
                    if($(window).scrollTop() < ($(pic).offset().top + $(pic).outerHeight()) &&
                       ($(window).scrollTop() + $(window).height()) > $(pic).offset().top){
                        currentPic=pic;
                        break;
                    }
                }
            }
            if(!currentPic && pics)currentPic=pics[0];
            for(var i=0;i<pics.length;i++){
                pic=pics[i];
                var pi;
                if(currentPic==pic){
                    if(d && pics.length>(i+1)){
                        pi=i+1;
                        currentPic=pics[pi];
                        while($(currentPic).is(":hidden") && ++pi<pics.length){
                            currentPic=pics[pi];
                        }
                    }else if(!d && i>0){
                        pi=i-1;
                        currentPic=pics[pi];
                        while($(currentPic).is(":hidden") && --pi>0){
                            currentPic=pics[pi];
                        }
                    }
                    break;
                }
            }
        }
        setTimeout(()=>{
            if(isTucao){
                currentPic.scrollIntoView({behavior: "smooth", block: "center", inline: "center"});
            }else if(currentPic.nextSibling && currentPic.nextSibling.className=="gif-mask"){
                currentPic.nextSibling.click();
            }
            currentPic.click();
        },100);
    }

    function checkBan(author){
        let authorId;
        let changeBtn = author.querySelector("#changeBtn");
        if(changeBtn == null){
            changeBtn=document.createElement("a");
            changeBtn.href=`javascript:void(0);`;
            changeBtn.id="changeBtn";
            if(isMobile){
                author=author.querySelector("b");
                if(!author)return;
                authorId=author.innerText;
                author.parentNode.insertBefore(changeBtn,author.parentNode.querySelector(".righttext"));
            }else if(isTucao){
                authorId=author.querySelector(".tucao-author").innerText;
                author.insertBefore(changeBtn,author.querySelector(".tucao-author").nextSibling);
            }else{
                authorId=isTop?author.querySelector("strong").innerText:author.querySelector("strong").title.replace(/防伪码:/,"");
                author.insertBefore(changeBtn,author.querySelector("br"));
            }
            changeBtn.onclick=function(){
                var author_s,j,shown;
                if(author.parentNode.classList.contains("hide")){
                    shown=false;
                    GM_deleteValue("jandanDis_"+authorId);
                }else{
                    shown=true;
                    GM_setValue("jandanDis_"+authorId,true);
                }
                var authors=document.querySelectorAll("div.author,.tucao-author-bar,.commentlist>li>b");
                for(j=0;j<authors.length;j++){
                    author_s=authors[j];
                    var changeBtn_s=author_s.querySelector("#changeBtn");
                    var isSame=false;
                    if(isMobile){
                        isSame=author_s.childNodes[0].nodeValue==authorId;
                    }else if(isTucao){
                        isSame=author_s.querySelector(".tucao-author").innerText==authorId;
                    }else if(isTop){
                        isSame=author_s.querySelector("strong").innerText==authorId;
                    }else{
                        isSame=author_s.querySelector("strong").title.replace(/防伪码:/,"")==authorId;
                    }
                    if(isSame){
                        //author_s.nextSibling.nextSibling.style.display=shown?"none":"block";
                        if(shown){
                            author_s.parentNode.classList.add("hide");
                            if(changeBtn_s)changeBtn_s.innerHTML="显";
                        }else{
                            author_s.parentNode.classList.remove("hide");
                            if(changeBtn_s)changeBtn_s.innerHTML="隐";
                        }
                    }
                }
            };
            if(GM_getValue("jandanDis_"+authorId)){
                author.parentNode.classList.add("hide");
                changeBtn.innerHTML="显";
            }else{
                changeBtn.innerHTML="隐";
            }
        }
        return changeBtn;
    }

    if(isMobile){
        selector=".commentlist>li";
    }else{
        selector="div.author,.tucao-author-bar";
    }
    [].forEach.call(document.querySelectorAll(selector), item=>{
        checkBan(item);
    });
    var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
    var observer = new MutationObserver(function(records){
        records.map(function(record) {
            for(var i=0;i<record.addedNodes.length;i++){
                var curNode=record.addedNodes[i];
                if(curNode.className=="tucao-row"){
                    checkBan(curNode.querySelector(selector));
                }
            }
        });
    });
    var option = {
        'childList': true
    };
    var tucaoList=document.querySelector("div.tucao-list");
    if(tucaoList)observer.observe(tucaoList, option);
    $("body").on("mouseover", selector, e=>{
        let changeBtn=checkBan(e.currentTarget);
        changeBtn.style.display="initial";
        //console.log(e);
    });
    $("body").on("mouseout", selector, e=>{
        let author=e.currentTarget;
        let changeBtn = author.querySelector("#changeBtn");
        if(changeBtn)changeBtn.style.display="";
    });
    /*for(i=0;i<authors.length;i++){
        let author=authors[i];
        let changeBtn=document.createElement("a");
        changeBtn.href=`javascript:void(0);`;
        changeBtn.id="changeBtn";
        changeBtn.style.display="none";
        let authorId;
        if(isTucao){
            authorId=author.querySelector(".tucao-author").innerText;
            author.appendChild(changeBtn);
        }else{
            authorId=isTop?author.querySelector("strong").innerText:author.querySelector("strong").title.replace(/防伪码:/,"");
            author.insertBefore(changeBtn,author.querySelector("br"));
        }
        if(GM_getValue("jandanDis_"+authorId)){
            author.parentNode.classList.add("hide");
            changeBtn.innerHTML="显";
        }else{
            changeBtn.innerHTML="隐";
        }
        author.onmouseover=function(){
            changeBtn.style.display="block";
        };
        author.onmouseout=function(){
            changeBtn.style.display="none";
        };
        changeBtn.onclick=function(){
            var author_s,j,shown;
            if(author.parentNode.classList.contains("hide")){
                shown=false;
                GM_deleteValue("jandanDis_"+authorId);
            }else{
                shown=true;
                GM_setValue("jandanDis_"+authorId,true);
            }
            for(j=0;j<authors.length;j++){
                author_s=authors[j];
                if((isTucao && author_s.querySelector(".tucao-author").innerText==authorId) || !isTucao &&(
                    (!isTop && author_s.querySelector("strong").title.replace(/防伪码:/,"")==authorId) ||
                   (isTop && author_s.querySelector("strong").innerText==authorId))){
                    //author_s.nextSibling.nextSibling.style.display=shown?"none":"block";
                    if(shown){
                        author_s.parentNode.classList.add("hide");
                        author_s.querySelector("#changeBtn").innerHTML="显";
                    }else{
                        author_s.parentNode.classList.remove("hide");
                        author_s.querySelector("#changeBtn").innerHTML="隐";
                    }
                }
            }
        };
    }*/
    var left,top,src;
    var bigImg=document.createElement("img");
    bigImg.className="big_img";
    $("body").on("mouseover","img",e=>{
        if(isMobile)return;
        let img=e.currentTarget;
        src=img.src.replace(/\b(!(custom|square))\b/,"").replace(/\b(custom|square)\b/,"medium").replace(/\.sinaimg\.cn\/thumb\d+/,".sinaimg.cn/large");
        src=isHttps?src.replace(/http\:\/\//,"https://"):src.replace(/https\:\/\//,"http://");
        bigImg.src=img.src;
        bigImg.src=src;
        left=e.clientX;
        top=e.clientY;
        document.body.appendChild(bigImg);
        setTimeout(()=>{
            bigImg.style.opacity=1;
        },0);
        relocBigImg(left, top);
        getImgWH(bigImg,function(w,h){
            relocBigImg(left, top, w, h);
        });
        bigImg.onload=function(){
            relocBigImg(left, top);
        };
    });
    $("body").on("mouseout","img",e=>{
        if(isMobile)return;
        if(bigImg.parentNode){
            bigImg.style.opacity=0;
            bigImg.parentNode.removeChild(bigImg);
        }
        bigImg.removeAttribute("height");
        bigImg.removeAttribute("width");
    });
    $("body").on("mousemove","img",e=>{
        if(isMobile)return;
        left=e.clientX;
        top=e.clientY;
        if(!bigImg.src || bigImg.src===""){
            img.onmouseover(e);
        }
        relocBigImg(left, top);
    });
    /*for(i=0;i<imgs.length;i++){
        let img=imgs[i];
        img.onmouseover=function(e){
            src=img.src.replace(/\b(!(custom|square))\b/,"").replace(/\b(custom|square)\b/,"medium").replace(/\.sinaimg\.cn\/thumb\d+/,".sinaimg.cn/large");
            src=isHttps?src.replace(/http\:\/\//,"https://"):src.replace(/https\:\/\//,"http://");
            bigImg.src=img.src;
            bigImg.src=src;
            left=e.clientX;
            top=e.clientY;
            document.body.appendChild(bigImg);
            setTimeout(()=>{
                bigImg.style.opacity=1;
            },500);
            relocBigImg(left, top);
            getImgWH(bigImg,function(w,h){
                relocBigImg(left, top, w, h);
            });
            bigImg.onload=function(){
                relocBigImg(left, top);
            };
        };
        img.onmouseout=function(e){
            if(bigImg.parentNode){
                bigImg.style.opacity=0;
                bigImg.parentNode.removeChild(bigImg);
            }
            bigImg.removeAttribute("height");
            bigImg.removeAttribute("width");
        };
        img.onmousemove=function(e){
            left=e.clientX;
            top=e.clientY;
            if(!bigImg.src || bigImg.src===""){
                img.onmouseover(e);
            }
            relocBigImg(left, top);
        };
    }*/
    $("body").on("mouseover","div.gif-mask",function(e){
        if(isMobile)return;
        src=this.previousSibling.getAttribute("org_src").replace(/\b(!(custom|square))\b/,"").replace(/\b(custom|square)\b/,"medium").replace(/\.sinaimg\.cn\/(mw600|thumb\d+)/,".sinaimg.cn/large");
        src=isHttps?src.replace(/http\:\/\//,"https://"):src.replace(/https\:\/\//,"http://");
        bigImg.src=this.previousSibling.src;
        bigImg.src=src;
        document.body.appendChild(bigImg);
        setTimeout(()=>{
            bigImg.style.opacity=1;
        },0);
        getImgWH(bigImg,function(w,h){
            relocBigImg(left, top, w, h);
        });
        bigImg.onload=function(){
            relocBigImg(left, top);
        };
    });
    $("body").on("mouseout","div.gif-mask",function(e){
        if(isMobile)return;
        if(bigImg.parentNode){
            bigImg.style.opacity=0;
            bigImg.parentNode.removeChild(bigImg);
        }
        bigImg.removeAttribute("height");
        bigImg.removeAttribute("width");
    });
    $("body").on("mousemove","div.gif-mask",function(e){
        if(isMobile)return;
        if(e){
            left=e.clientX;
            top=e.clientY;
        }
        if(!bigImg.src || bigImg.src===""){
            this.onmouseover(e);
        }
        relocBigImg(left, top);
    });
    function relocBigImg(left, top, w, h){
        var imgWidth=w?w:bigImg.width;
        var imgHeight=h?h:bigImg.height;
        var type=imgHeight/imgWidth>document.documentElement.clientHeight/document.documentElement.clientWidth;
        if(type && imgHeight>document.documentElement.clientHeight){
            imgHeight=bigImg.height=document.documentElement.clientHeight;
        }
        if(!type && imgWidth>document.documentElement.clientWidth){
            imgWidth=bigImg.width=document.documentElement.clientWidth;
        }
        if(top-imgHeight<0){
            top=0;
        }else{
            top-=imgHeight;
        }
        if(left>document.documentElement.clientWidth/2){
            if(left+imgWidth>document.documentElement.clientWidth){
                left=document.documentElement.clientWidth-imgWidth;
            }
            left+=10;
        }else{
            left=left-imgWidth;
            if(left<0){
                left=0;
            }else left-=10;
        }
        bigImg.style.left=left+"px";
        bigImg.style.top=top+"px";
    }
    GM_addStyle(`
    .row.hide,.tucao-row.hide{
      opacity: 0.1;
    }
    .row.hide div.text,.tucao-row.hide .tucao-content,.tucao-row.hide .tucao-image,li.hide>.commenttext{
      display: none;
    }
    .row.hide:hover,.tucao-row.hide:hover{
      opacity: 0.5;
    }
    .tucao-author-bar #changeBtn{
      padding: 0 10px;
    }
    #changeBtn{
      display: none;
    }
    .big_img{
      pointer-events: none;
      position: fixed;
      z-index: 999;
      opacity: 0;
      transition: opacity .5s ease-in-out;
      -moz-transition: opacity .5s ease-in-out;
      -o-transition: opacity .5s ease-in-out;
      -webkit-transition: opacity .5s ease-in-out;
    }
    `);
})();