Greasy Fork is available in English.

煎蛋侠

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

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, Greasemonkey alebo Violentmonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, % alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey alebo Userscripts.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie správcu používateľských skriptov.

(Už mám správcu používateľských skriptov, nechajte ma ho nainštalovať!)

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

(Už mám správcu používateľských štýlov, nechajte ma ho nainštalovať!)

// ==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;
    }
    `);
})();