您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
可調整巴哈姆特哈啦討論區留言的顯示順序(新留言在上或舊留言在上)、切換直接顯示留言者帳號、加入留言樓層數字、單獨開啟關閉某篇文章圖片影像
当前为
// ==UserScript== // @name bahamut commend enhanced // @namespace http://userscripts/user // @include http://forum.gamer.com.tw/C.php?* // @include http://forum.gamer.com.tw/Co.php?* // @description 可調整巴哈姆特哈啦討論區留言的顯示順序(新留言在上或舊留言在上)、切換直接顯示留言者帳號、加入留言樓層數字、單獨開啟關閉某篇文章圖片影像 // @version 1.06.1 // @grant GM_getValue // @grant GM_setValue // @grant GM_addStyle // ==/UserScript== //滑鼠移上留言時背景底色變化 GM_addStyle(".FM-cbox10 p:hover { background-color : #eaeaea !important;}"); //記錄最後使用的留言排列順序 var BHCOA; var BHCO = GM_getValue("BHCO",false); var rk = GM_getValue("BHCO",false); var BHCNW = GM_getValue("BHCNW",false); var oldmoreCommend = unsafeWindow.moreCommend; var oldallCommend = unsafeWindow.allCommend; var oldcloseallCommend = unsafeWindow.closeallCommend; var oldforumShowAllMedia = unsafeWindow.forumShowAllMedia; //在原函式 moreCommend 中加入新功能 function moreCommend(bsn,snB,where){ var cptext = "Commendlist_"+snB; var cptmp = unsafeWindow.document.getElementById(cptext).getElementsByTagName("p"); var ntmp = parseInt(unsafeWindow.document.getElementById("showoldCommend_"+snB).innerHTML.substring(6)) + parseInt(unsafeWindow.document.getElementById("Commendlist5_"+snB).childNodes.length)-1; oldmoreCommend(bsn,snB,where); BHC1000Wait(cptmp,ntmp,snB,unsafeWindow.document.getElementById("showoldCommend_"+snB).previousSibling.previousSibling.firstChild.innerHTML.substring(5)); BHCOA = BHCO; } //在原函式 allCommend 中加入新功能 function allCommend(bsn,snB,where){ var cptext = "Commendlist_"+snB; var cptmp = unsafeWindow.document.getElementById(cptext).getElementsByTagName("p"); var ntmp = parseInt(unsafeWindow.document.getElementById(where).innerHTML.substring(6))+cptmp.length; oldallCommend(bsn,snB,where); BHCWait(cptmp,ntmp,unsafeWindow.document.getElementById(where).previousSibling.previousSibling.firstChild.innerHTML.substring(5)); BHCOA = BHCO; } //在原函式 closeallCommend 中加入新功能 function closeallCommend(bsn,snB,where){ oldcloseallCommend(bsn,snB,where); var cptext = "Commendlist_"+snB; var cptmp = unsafeWindow.document.getElementById(cptext).getElementsByTagName("p"); if((parseInt(cptmp[0].id.substring(15))>parseInt(cptmp[1].id.substring(15)) && unsafeWindow.document.getElementById(where).previousSibling.previousSibling.firstChild.innerHTML.substring(5) == "↑")||(parseInt(cptmp[0].id.substring(15))<parseInt(cptmp[1].id.substring(15)) && unsafeWindow.document.getElementById(where).previousSibling.previousSibling.firstChild.innerHTML.substring(5) == "↓")) CommendOrder(cptmp,false); else CommendOrder(cptmp,true); } //在原函式 forumShowAllMedia 中加入新功能 forumShowAllMedia = function (a){ GamerChangeAllBtnToClose(); return oldforumShowAllMedia(a); } //開啟超過1000則的舊留言,在讀取完留言後進行新功能 function BHC1000Wait(cps,num,snB,ud){ if(unsafeWindow.document.getElementById("CommendMore_"+snB).style.display != "none") window.setTimeout(function(){BHC1000Wait(cps,num,snB,ud)}, 50); else { var cptext = "Commendlist_"+snB; var cptmp = unsafeWindow.document.getElementById(cptext).getElementsByTagName("p"); var newnode; for(i=num-1000;i>0;i--){ newnode = unsafeWindow.document.createElement("span"); newnode.innerHTML = i + " :"; newnode.setAttribute("style","color:#585858;margin:0 5px 0 -2px;"); cptmp[i-1].insertBefore(newnode,cptmp[i-1].firstChild); if(BHCNW){ if(cptmp[i-1].childNodes[3].tagName != "SPAN" && cptmp[i-1].childNodes[3].tagName != "span"){ var Namenode = unsafeWindow.document.createElement("span"); Namenode.innerHTML = " (" + cptmp[i-1].childNodes[2].innerHTML + ")"; Namenode.setAttribute("style","color:#282828;margin:0 5px 0 -2px;"); cptmp[i-1].childNodes[2].innerHTML = cptmp[i-1].childNodes[2].title; cptmp[i-1].insertBefore(Namenode,cptmp[i-1].childNodes[3]); } } if(ud=="↑") cptmp[i-1].parentNode.appendChild(cptmp[i-1]); } } } //開啟所有舊留言,在讀取完留言後進行新功能 function BHCWait(cps,num,ud){ if(cps.length<num && cps.length<6) window.setTimeout(function(){unsafeWindow.BHCWait(cps,num,ud)}, 50); else { if(ud=="↑") CommendOrder(cps,true,num); else CommendOrder(cps,false,num); } } //留言加入樓數、排列順序 function CommendOrder(BHpA,rkey,num){ var l; if(num && num>1000) l=num-1000; else l=0; var k = BHpA.length; if(k>0){ var nodetmp,nodeIdtmp,nodeNametmp,j,m,nodeid,nodeName; var BHpp = BHpA[0].parentNode.parentNode.getElementsByTagName("p"); if(BHpp[0].className == "FM-cbox10D" && k < 6 && (BHpp[0].firstChild.tagName == "A" || BHpp[0].firstChild.tagName == "a")) m = parseInt(BHpp[0].firstChild.innerHTML.substring(6)); else m = l; for(j = 0;j<parseInt(k/2);j++){ if(BHpA[j].firstChild.tagName == "BUTTON" || BHpA[j].firstChild.tagName == "button"){ var newnode1 = unsafeWindow.document.createElement("span"); var newnode2 = unsafeWindow.document.createElement("span"); newnode1.innerHTML = (j+1+m) + " :"; newnode2.innerHTML = (k-j+m) + " :"; newnode1.setAttribute("style","color:#585858;margin:0 5px 0 -2px;"); newnode2.setAttribute("style","color:#585858;margin:0 5px 0 -2px;"); BHpA[j].insertBefore(newnode1,BHpA[j].firstChild); BHpA[k-j-1].insertBefore(newnode2,BHpA[k-j-1].firstChild); } if(BHCNW){ if(BHpA[j].childNodes[3].tagName != "SPAN" && BHpA[j].childNodes[3].tagName != "span"){ var Namenode1 = unsafeWindow.document.createElement("span"); var Namenode2 = unsafeWindow.document.createElement("span"); Namenode1.innerHTML = " (" + BHpA[j].childNodes[2].innerHTML + ")"; Namenode2.innerHTML = " (" + BHpA[k-j-1].childNodes[2].innerHTML + ")"; Namenode1.setAttribute("style","color:#282828;margin:0 5px 0 -2px;"); Namenode2.setAttribute("style","color:#282828;margin:0 5px 0 -2px;"); BHpA[j].childNodes[2].innerHTML = BHpA[j].childNodes[2].title; BHpA[k-j-1].childNodes[2].innerHTML = BHpA[k-j-1].childNodes[2].title; BHpA[j].insertBefore(Namenode1,BHpA[j].childNodes[3]); BHpA[k-j-1].insertBefore(Namenode2,BHpA[k-j-1].childNodes[3]); } } else if(BHpA[j].childNodes[3].tagName == "SPAN" || BHpA[j].childNodes[3].tagName == "span"){ BHpA[j].childNodes[2].innerHTML = BHpA[j].childNodes[3].innerHTML.substring(7,BHpA[j].childNodes[3].innerHTML.length-1); BHpA[k-j-1].childNodes[2].innerHTML = BHpA[k-j-1].childNodes[3].innerHTML.substring(7,BHpA[k-j-1].childNodes[3].innerHTML.length-1); BHpA[j].removeChild(BHpA[j].childNodes[3]); BHpA[k-j-1].removeChild(BHpA[k-j-1].childNodes[3]); } if(rkey){ nodetmp = BHpA[j].innerHTML; nodeIdtmp = BHpA[j].getAttribute("id"); nodeNametmp = BHpA[j].getAttribute("name"); BHpA[j].innerHTML = BHpA[k-j-1].innerHTML; BHpA[j].setAttribute("id",BHpA[k-j-1].getAttribute("id")); BHpA[j].setAttribute("name",BHpA[k-j-1].getAttribute("name")); BHpA[k-j-1].innerHTML = nodetmp; BHpA[k-j-1].setAttribute("id",nodeIdtmp); BHpA[k-j-1].setAttribute("name",nodeNametmp); } } if(j == (k-j-1) && (BHpA[j].firstChild.tagName == "BUTTON" || BHpA[j].firstChild.tagName == "button")){ var newnode3 = unsafeWindow.document.createElement("span"); newnode3.innerHTML = (j+1+m) + " :"; newnode3.setAttribute("style","color:#585858;margin:0 5px 0 -2px;"); BHpA[j].insertBefore(newnode3,BHpA[j].firstChild); } if(BHCNW){ if(BHpA[j].childNodes[3].tagName != "SPAN" && BHpA[j].childNodes[3].tagName != "span"){ var Namenode = unsafeWindow.document.createElement("span"); Namenode.innerHTML = " (" + BHpA[j].childNodes[2].innerHTML + ")"; Namenode.setAttribute("style","color:#282828;margin:0 5px 0 -2px;"); BHpA[j].childNodes[2].innerHTML = BHpA[j].childNodes[2].title; BHpA[j].insertBefore(Namenode,BHpA[j].childNodes[3]); } } else if(BHpA[j].childNodes[3].tagName == "SPAN" || BHpA[j].childNodes[3].tagName == "span"){ BHpA[j].childNodes[2].innerHTML = BHpA[j].childNodes[3].innerHTML.substring(7,BHpA[j].childNodes[3].innerHTML.length-1); BHpA[j].removeChild(BHpA[j].childNodes[3]); } } } //調整留言排列順序 function GamerCommendReverse(event){ var BHDivs =(event) ? event.currentTarget.parentNode.parentNode.getElementsByTagName("div") : unsafeWindow.document.getElementsByTagName("div"); var ek = (event) ? true : false; if(event){ rk = (rk) ? false : true; BHCO = rk; if(event.currentTarget.firstChild.innerHTML == "↑留言順序↑") event.currentTarget.firstChild.innerHTML = "↓留言順序↓"; else event.currentTarget.firstChild.innerHTML = "↑留言順序↑" ; GM_setValue("BHCO",rk); } for(i = 0;i < BHDivs.length;i++){ if(BHDivs[i].className == "FM-msgbg"){ var BHps = BHDivs[i].getElementsByTagName("p"); CommendOrder(BHps,ek||rk); } } } //切換直接顯示留言者帳號 function GamerCommendNameSwitch(event){ var ktmp var BHDivs =(event) ? event.currentTarget.parentNode.parentNode.getElementsByTagName("div") : unsafeWindow.document.getElementsByTagName("div"); if(event){ BHCNW = BHCNW ? false : true; if(event.currentTarget.firstChild.innerHTML == "●留言者帳號") ktmp = true; else ktmp = false; if(BHCNW) event.currentTarget.firstChild.innerHTML = "●留言者帳號"; else event.currentTarget.firstChild.innerHTML = "○留言者帳號" ; GM_setValue("BHCNW",BHCNW); } if((ktmp && !BHCNW) || (!ktmp && BHCNW)){ for(i = 0;i < BHDivs.length;i++){ if(BHDivs[i].className == "FM-msgbg"){ var BHps = BHDivs[i].getElementsByTagName("p"); CommendOrder(BHps,false); } } } } //更改開啟圖像為關閉圖像 function GamerChangeBtnToClose(BE){ if(BE.innerHTML != "關圖"){ BE.innerHTML = "關圖"; BE.removeEventListener('click',unsafeWindow.GamerOpenImage,true); } BE.addEventListener('click',unsafeWindow.GamerCloseImage,true); } //更改關閉圖像為開啟圖像 function GamerChangeBtnToOpen (BE){ if(BE.innerHTML != "開圖"){ BE.innerHTML = "開圖"; BE.removeEventListener('click',unsafeWindow.GamerCloseImage,true); } BE.addEventListener('click',unsafeWindow.GamerOpenImage,true); } //點擊開啟全部圖像時,更改單篇開啟圖像為關閉圖像 function GamerChangeAllBtnToClose(){ var BHPA = unsafeWindow.document.getElementsByTagName("p"); var i; for(i = 0;i < BHPA.length;i++){ if(BHPA[i].className == "FM-cbox4" && BHPA[i].childNodes.length > 2){ GamerChangeBtnToClose(BHPA[i].lastChild); } } } //開啟單篇文章的圖片、影像 function GamerOpenImage(event){ var EDivA = event.currentTarget.parentNode.parentNode.parentNode.getElementsByTagName("div"); GamerChangeBtnToClose(event.currentTarget); var i,j,Mid; for(i = 0;i < EDivA.length;i++){ if(EDivA[i].className.substring(0,8) == "FM-cbox7"){ var EAA = EDivA[i].getElementsByTagName("a"); if(EAA){ for (j = 0; j < EAA.length; j++) { if(EAA[j].name == "attachImgName") unsafeWindow.attachIMG(EAA[j], 'show'); if(EAA[j].name == "attachMovieName") unsafeWindow.attachMOVIE(EAA[j]); } } } } } //關閉單篇文章的圖片、影像 function GamerCloseImage(event){ var EDivA = event.currentTarget.parentNode.parentNode.parentNode.getElementsByTagName("div"); GamerChangeBtnToOpen(event.currentTarget); var i,j; for(i = 0;i < EDivA.length;i++){ if(EDivA[i].className.substring(0,8) == "FM-cbox7"){ var EAA = EDivA[i].getElementsByTagName("a"); if(EAA){ for (j = 0; j < EAA.length; j++) { if(EAA[j].name == "attachImgName"){ EAA[j].innerHTML = '<script language="javascript">showMediaClick("img")</script>請點選觀看圖片'; EAA[j].removeAttribute("data-expanded"); } if(EAA[j].name == "attachMovieName"){ EAA[j].href = EAA[j].firstChild.getAttribute("data-src"); EAA[j].innerHTML = '<script language="javascript">showMediaClick("movie")</script>請點選觀看影片'; } } } } } } //單篇文章的影像、圖片若已全部開啟,將開啟圖像改為關閉圖像 function GamerImgOpenCheck(event){ var i,ImgOpenF = true; var CTAA; if(event.currentTarget.parentNode.className=="FM-P2") CTAA = event.currentTarget.parentNode.getElementsByTagName("a"); else if(event.currentTarget.parentNode.parentNode.className=="FM-P2") CTAA = event.currentTarget.parentNode.parentNode.getElementsByTagName("a"); else if((event.currentTarget.parentNode.parentNode.parentNode.className=="FM-P2")) CTAA = event.currentTarget.parentNode.parentNode.parentNode.getElementsByTagName("a"); for(i = 0; i < CTAA.length; i++){ if((CTAA[i].name == "attachImgName" || CTAA[i].name == "attachMovieName") && CTAA[i].firstChild.tagName == "SCRIPT"){ ImgOpenF = false; break; } } if(ImgOpenF){ var CTPA,CTPNA = event.currentTarget.parentNode.parentNode.parentNode.parentNode.parentNode; if(CTPNA.className != "FM-cbox1") CTPNA = event.currentTarget.parentNode.parentNode.parentNode.parentNode; if(CTPNA.className != "FM-cbox1") CTPNA = event.currentTarget.parentNode.parentNode.parentNode; CTPA = CTPNA.getElementsByTagName("p"); for (i = 0; i < CTPA.length; i++){ if(CTPA[i].className == "FM-cbox4" && CTPA[i].childNodes.length > 2) GamerChangeBtnToClose(CTPA[i].lastChild); } } } //加入改變留言順序的連結點 function BHCES(){ unsafeWindow.BHCWait = exportFunction(BHCWait,unsafeWindow); unsafeWindow.BHC1000Wait = exportFunction(BHC1000Wait,unsafeWindow); unsafeWindow.moreCommend = exportFunction(moreCommend,unsafeWindow); unsafeWindow.allCommend = exportFunction(allCommend,unsafeWindow); unsafeWindow.closeallCommend = exportFunction(closeallCommend,unsafeWindow); unsafeWindow.GamerCommendReverse = exportFunction(GamerCommendReverse,unsafeWindow); unsafeWindow.GamerCommendNameSwitch = exportFunction(GamerCommendNameSwitch,unsafeWindow); unsafeWindow.GamerOpenImage = exportFunction(GamerOpenImage,unsafeWindow); unsafeWindow.GamerCloseImage = exportFunction(GamerCloseImage,unsafeWindow); unsafeWindow.GamerImgOpenCheck = exportFunction(GamerImgOpenCheck,unsafeWindow); unsafeWindow.forumShowAllMedia = exportFunction(forumShowAllMedia,unsafeWindow); GamerCommendReverse(); var BHDivA = unsafeWindow.document.getElementsByTagName("div"); for(i = 0;i < BHDivA.length;i++){ if(BHDivA[i].className == "FM-cbox10"){ var j,pchecked1 = false,pchecked2 = false; var tmp = (BHCO) ? "↑" : "↓"; var ANtmp = (BHCNW) ? "●" : "○"; for(j = 0;j < BHDivA[i].childNodes.length;j++){ if(BHDivA[i].childNodes[j].className == "FM-cbox10D") pchecked1 = true; if(BHDivA[i].childNodes[j].className == "FM-msgbg" && BHDivA[i].childNodes[j].childNodes.length > 2) pchecked2 = true; } if(!pchecked1 && pchecked2){ BHDivA[i].innerHTML = '<p class="FM-cbox10D"><span style="text-align:left;float:left;"><a href ="javascript:;">'+tmp+'留言順序'+tmp+'</a></span><span style="text-align:left;float:left;"><a href ="javascript:;">'+ANtmp+'留言者帳號</a></span></p>' + BHDivA[i].innerHTML; BHDivA[i].firstChild.firstChild.addEventListener('click',unsafeWindow.GamerCommendReverse,true); BHDivA[i].firstChild.childNodes[1].addEventListener('click',unsafeWindow.GamerCommendNameSwitch,true); } else if(pchecked1){ PA = BHDivA[i].getElementsByTagName("p"); PA[0].innerHTML = '<span style="text-align:left;float:left;"><a href ="javascript:;">'+tmp+'留言順序'+tmp+'</a></span><span style="text-align:left;float:left;"><a href ="javascript:;">'+ANtmp+'留言者帳號</a></span>' + PA[0].innerHTML; PA[0].firstChild.addEventListener('click',unsafeWindow.GamerCommendReverse,true); PA[0].childNodes[1].addEventListener('click',unsafeWindow.GamerCommendNameSwitch,true); } } } //修改開啟圖片按鈕的連結點 var BHPA = unsafeWindow.document.getElementsByTagName("p"); for(i = 0;i < BHPA.length;i++){ if(BHPA[i].className == "FM-cbox4"){ BHPA[i].removeChild(BHPA[i].childNodes[2]); var BHPDivA = BHPA[i].parentNode.parentNode.getElementsByTagName("div"); var k,j,Iflag = false,Oflag = true; for(k = 0;k < BHPDivA.length;k++){ if(BHPDivA[k].className.substring(0,8) == "FM-cbox7"){ var EAA = BHPDivA[k].getElementsByTagName("a"); if(EAA){ for(j = 0; j < EAA.length; j++){ if(EAA[j].name == "attachImgName" || EAA[j].name == "attachMovieName"){ Iflag = true; EAA[j].addEventListener('click',unsafeWindow.GamerImgOpenCheck,true); if(EAA[j].firstChild.tagName == "SCRIPT") Oflag = false; } } } } } if(Iflag){ var newnode = unsafeWindow.document.createElement("a"); if(Oflag){ newnode.innerHTML="關圖"; newnode.addEventListener('click',unsafeWindow.GamerCloseImage,true); } else{ newnode.innerHTML="開圖"; newnode.addEventListener('click',unsafeWindow.GamerOpenImage,true); } newnode.setAttribute("href","javascript:;"); BHPA[i].insertBefore(newnode,BHPA[i].lastChild.nextSibling); } } } //將原有的開啟所有圖片按鈕移到上面的浮動功能列 var newLi = unsafeWindow.document.createElement("li"); newLi.innerHTML = '<a href="javascript:;">圖像全開</a>'; newLi.addEventListener('click',unsafeWindow.forumShowAllMedia,true); var BHMenu = unsafeWindow.document.getElementById("BH-menu-path"); var BHMenuULA = BHMenu.getElementsByTagName("ul"); BHMenuULA[0].insertBefore(newLi,BHMenuULA[0].childNodes[6]); } BHCES();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址