您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Formats MangaReader to view your manga easier
// ==UserScript== // @name MangaReader Easy Viewing // @namespace NoxTox // @description Formats MangaReader to view your manga easier // @include http://www.mangareader.net/*/* // @latestupdate code cleanup // @version 1.0 // ==/UserScript== var pM = document.getElementById("pageMenu"); if (pM && pM.selectedIndex == 0) { var chapters = document.getElementById("chapterMenu"); var numPages = document.evaluate('//select[@id="pageMenu"]/option', pM, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null).snapshotLength; var isrc = document.getElementById("img").src; var series = document.evaluate('//h2/a', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; var numLoaded = 0; var blockLoad = true; var loadAll = false; var firstIndex, currentIndex; if (isrc.substring(isrc.lastIndexOf("/")+1).indexOf("_") > -1) { var isrc1 = isrc.substring(0, isrc.lastIndexOf("/")+1); var isrc2 = isrc.substring(isrc.lastIndexOf("/")+1, isrc.lastIndexOf("_")); var isrc3 = isrc.substring(isrc.lastIndexOf("_")); } else { var isrc1 = isrc.substring(0, isrc.lastIndexOf("-")+1); var isrc2 = isrc.substring(isrc.lastIndexOf("-")+1, isrc.lastIndexOf(".")); var isrc3 = isrc.substring(isrc.lastIndexOf(".")); } document.getElementsByTagName("head")[0].innerHTML = ""; document.body.innerHTML = ""; document.title = series.innerHTML.replace("Manga", "") + "@ Mangareader Easy Viewing"; addStyle('body {margin: 0px; text-align:center; background-color:black;} #content {width:'+ (window.innerWidth - 247) +'px; margin-left:230px; color:#AAAAAA;} #menudiv {position:fixed; left:0px; top:0px; height:98%; padding:5px; overflow:hidden; text-align:left;} a {color:red; font-size: 14px} #menudiv a:hover {background-color:red; color:black;} p {color:red; font-weight:bold; margin:0px};'); chapters.style.cssFloat = "none"; chapters.style.width = "230px"; chapters.style.backgroundColor = "black"; chapters.style.color = "red"; d = document.createElement("div"); d.id = "menudiv"; var a1 = document.createElement("a"); a1.href = "/"; a1.innerHTML = "MR Homepage"; d.appendChild(a1); d.appendChild(document.createElement("br")); var a2 = document.createElement("a"); a2.href = series.href; a2.innerHTML = series.innerHTML + " Series Page"; d.appendChild(a2); d.appendChild(document.createElement("br")); d.appendChild(chapters); d.appendChild(document.createElement("br")); d.addEventListener("mouseover", function(e) {d.scrollTop += 50*(e.clientY/d.clientHeight - 0.5);} ,false); document.body.appendChild(d); var contents = document.createElement("div"); contents.id="content"; document.body.appendChild(contents); if (typeof unsafeWindow == 'object' && typeof unsafeWindow.omvKeyPressed == 'function') unsafeWindow.omvKeyPressed = null; else if (typeof document.omvKeyPressed == 'function') document.omvKeyPressed = null; document.addEventListener("keydown", function(e) { if (e.keyCode == 32 || e.keyCode == 40) { var scroller = setInterval("scrollBy(0,25)", 3); setTimeout("clearInterval("+scroller+")", 125); e.preventDefault(); } else if (e.keyCode == 38) { var scroller = setInterval("scrollBy(0,-25)", 3); setTimeout("clearInterval("+scroller+")", 125); e.preventDefault(); } else if (e.keyCode == 76) loadAll = !loadAll; }, false); var sI = setInterval(function() { if (chapters && chapters.childNodes.length > 0 && chapters.selectedIndex > -1) { if (chapters.childNodes[chapters.selectedIndex].getAttribute("selected") != "selected") { var phc = document.createElement("option"); phc.innerHTML = "Chapter " + (chapters.childNodes.length + 1) + ": Unknown Title"; chapters.appendChild(phc); chapters.selectedIndex = chapters.childNodes.length - 1; } firstIndex = chapters.selectedIndex; currentIndex = firstIndex; preloadChapter(); if (currentIndex < chapters.childNodes.length) setInterval(function () { if (!blockLoad && (document.body.clientHeight-window.pageYOffset-window.innerHeight < 15000 || loadAll || currentIndex == firstIndex) && currentIndex < chapters.childNodes.length) { blockLoad = true; loadNextChapter(++currentIndex); } }, 3000); clearInterval(sI); } }, 250); } var rxp1 = /<select id="pageMenu" .+?>((?:\s*<option .+?>[^<]+<\/option>)+\s*)<\/select>/; var rxp2 = /<img.+?src="(.+?)".+?>/; //Functions function preloadChapter() { var aa= document.createElement("a"); aa.name = currentIndex; contents.appendChild(aa); var ar = document.createElement("a"); ar.href = "#" + currentIndex; ar.innerHTML = chapters.childNodes[currentIndex].innerHTML; d.appendChild(ar); d.appendChild(document.createElement("br")); loadPage(0); } function loadPage(iter) { var imgNode = document.createElement("img"); imgNode.src = isrc1 + isrc2 + isrc3; imgNode.name = isrc2; imgNode.addEventListener("error", ierr, false); imgNode.addEventListener("load", iload, false); imgNode.addEventListener("click", function() { if (!this.complete) this.src = this.src;}, false); var imgPage = document.createElement("p"); imgPage.innerHTML = chapters.childNodes[currentIndex].innerHTML + " (Page ?/" + numPages + ")"; imgPage.className = "unpaginated"; contents.appendChild(imgPage); contents.appendChild(imgNode); contents.appendChild(document.createElement("hr")); isrc2++; if (numLoaded < numPages && iter < numPages*6 + 10) setTimeout(function () {loadPage(++iter);}, 100); else { if (numLoaded < numPages && typeof GM_log == 'function') GM_log("Note: Stopped preloading images based on preset limit. # pages loaded: " + numLoaded + ", # pages expected: " + numPages + ", preset limit: " + iter); unBlock(); } } function xhr(details) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { var responseState = { responseText:(xmlhttp.readyState==4 ? xmlhttp.responseText : ''), readyState:xmlhttp.readyState, status:(xmlhttp.readyState==4 ? xmlhttp.status : 0), statusText:(xmlhttp.readyState==4 ? xmlhttp.statusText : '') } if (details["onreadystatechange"]) details["onreadystatechange"](responseState); if (xmlhttp.readyState==4) { if (details["onload"] && xmlhttp.status>=200 && xmlhttp.status<300) details["onload"](responseState); if (details["onerror"] && (xmlhttp.status<200 || xmlhttp.status>=300)) details["onerror"](responseState); } } xmlhttp.open(details.method, details.url); if (details.headers) { for (var prop in details.headers) xmlhttp.setRequestHeader(prop, details.headers[prop]); } xmlhttp.send((typeof(details.data)!='undefined')?details.data:null); } function loadNextChapter(chapterIndex) { xhr({ method: 'GET', url: chapters.childNodes[chapterIndex].value, onload: function(responseDetails) { if (responseDetails.status == 200) { numPages = responseDetails.responseText.match(rxp1)[1].split("<option").length-1; isrc = responseDetails.responseText.match(rxp2)[1]; if (isrc.substring(isrc.lastIndexOf("/")+1).indexOf("_") > -1) { isrc1 = isrc.substring(0, isrc.lastIndexOf("/")+1); isrc2 = isrc.substring(isrc.lastIndexOf("/")+1, isrc.lastIndexOf("_")); isrc3 = isrc.substring(isrc.lastIndexOf("_")); } else { isrc1 = isrc.substring(0, isrc.lastIndexOf("-")+1); isrc2 = isrc.substring(isrc.lastIndexOf("-")+1, isrc.lastIndexOf(".")); isrc3 = isrc.substring(isrc.lastIndexOf(".")); } preloadChapter(); } else { if (typeof GM_log == 'function') GM_log("xmlHttpRequest Loaded, Failed: " + responseDetails.statusText); currentIndex--; } }, onerror: function(responseDetails) { if (typeof GM_log == 'function') GM_log("xmlHttpRequest Error, Failed: " + responseDetails.statusText); currentIndex--; blockLoad = false; } }); } function ierr(e) { this.removeEventListener("error", ierr, false); this.removeEventListener("load", iload, false); this.parentNode.removeChild(this.nextSibling); this.parentNode.removeChild(this.previousSibling); this.parentNode.removeChild(this); }; function iload() { numLoaded++; this.removeEventListener("error", ierr, false); this.removeEventListener("load", iload, false); } function unBlock() { var unpaginated = document.evaluate('//p[@class="unpaginated"]', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); if (unpaginated.snapshotLength > numPages) setTimeout(unBlock, 1000); else { if (numLoaded != numPages) if (typeof GM_log == 'function') GM_log("Warning: Number of pages loaded (" + numLoaded + ") does not equal number of pages expected (" + numPages + ") for " + chapters.childNodes[currentIndex].innerHTML + "."); for (var i=0; i<unpaginated.snapshotLength; i++) { unpaginated.snapshotItem(i).innerHTML = chapters.childNodes[currentIndex].innerHTML + " (Page " + (i+1) + "/" + numPages + ")"; unpaginated.snapshotItem(i).className = ""; } if (currentIndex + 1 == chapters.childNodes.length) contents.appendChild(document.createTextNode("~End of Series~")); else { numLoaded = 0; blockLoad = false; } } } function addStyle(css) { var head = document.evaluate('//head', document, null, XPathResult.ANY_UNORDERED_NODE_TYPE, null).singleNodeValue; if (!head) return; var style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = css; head.appendChild(style); } var SUC_script_num = 84045; try{function updateCheck(forced){if ((forced) || (parseInt(GM_getValue('SUC_last_update', '0')) + 432000000 <= (new Date().getTime()))){try{GM_xmlhttpRequest({method: 'GET',url: 'http://userscripts.org/scripts/source/'+SUC_script_num+'.meta.js?'+new Date().getTime(),headers: {'Cache-Control': 'no-cache'},onload: function(resp){var local_version, remote_version, rt, script_name;rt=resp.responseText;GM_setValue('SUC_last_update', new Date().getTime()+'');remote_version=parseInt(/@uso:version\s*(.*?)\s*$/m.exec(rt)[1]);local_version=parseInt(GM_getValue('SUC_current_version', '-1'));if(local_version!=-1){script_name = (/@name\s*(.*?)\s*$/m.exec(rt))[1];GM_setValue('SUC_target_script_name', script_name);if (remote_version > local_version){if(confirm('There is an update available for the Greasemonkey script "'+script_name+'."\nUpdate Details:\n'+(/@latestupdate\s*(.*?)\s*$/m.exec(rt))[1]+'\nWould you like to go to the install page now?')){GM_openInTab('http://userscripts.org/scripts/show/'+SUC_script_num);GM_setValue('SUC_current_version', remote_version);}}else if (forced)alert('No update is available for "'+script_name+'."');}else GM_setValue('SUC_current_version', remote_version+'');}});}catch (err){if (forced)alert('An error occurred while checking for updates:\n'+err);}}}GM_registerMenuCommand(GM_getValue('SUC_target_script_name', '???') + ' - Manual Update Check', function(){updateCheck(true);});updateCheck(false);}catch(err){};
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址