为煎蛋jandan.net提供左右方向键快捷翻页、上下方向键快捷切图、鼠标悬停显示大图、屏蔽指定用户发言等功能
// ==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; } `); })();