您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
在 e-hentai 滚动卷轴持续浏览
当前为
// ==UserScript== // @namespace https://greasyfork.org/zh-TW/users/142344-jasn-hr // @name e-hentai Scroll Mode // @name:zh-TW e-hentai 滾動模式 // @name:zh-CN e-hentai 滚动模式 // @name:ja e-hentai スクロールモード // @description Scroll to browsing e-hentai's art. // @description:zh-TW 在 e-hentai 滾動卷軸持續瀏覽 // @description:zh-CN 在 e-hentai 滚动卷轴持续浏览 // @description:ja e-hentaiスクロールスクロールでブラウジングを続ける // @copyright 2019, HrJasn (https://greasyfork.org/zh-TW/users/142344-jasn-hr) // @license GPL-3.0-or-later // @version 2.1.3 // @icon https://www.google.com/s2/favicons?domain=e-hentai.org // @include http*://e-hentai.org/s/* // @include http*://exhentai.org/s/* // @exclude http*://www.e-hentai.org/* // @grant none // ==/UserScript== window.onload = function(){ targetURL = ""; currentImageURL = ""; currentImageOnclick = ""; currentImageScrollTop = 0; lastScrollTop = 0; mainImage = document.querySelector("#img"); mainImage_parentDIV = mainImage.parentNode.parentNode.parentNode; scrollMode_DIV = document.body.appendChild(document.createElement("div")); scrollMode_DIV.style = "z-index:999;position:fixed;cursor:pointer;left:0px;width:100%;height:0px;top:" + window.innerHeight + "px;-webkit-overflow-scrolling:touch;overflow-y:scroll;background-color:gray;transition:all 0.5s ease 0.5s;"; mainImage_clone = scrollMode_DIV.appendChild(mainImage.cloneNode(true)); mainImage_clone.style.maxWidth = ""; mainImage_clone.style.maxHeight = ""; mainImage_clone_originalWidth = mainImage_clone.offsetWidth; mainImage_clone_originalHeight = mainImage_clone.offsetHeight; mainImage_clone.setAttribute("originalWidth",mainImage_clone_originalWidth); mainImage_clone.setAttribute("originalHeight",mainImage_clone_originalHeight); mainImage_clone.style.width = "100%"; mainImage_clone.style.height = (mainImage_clone_originalHeight*mainImage_clone.offsetWidth)/mainImage_clone_originalWidth + "px"; mainImage_clone.setAttribute("prevURL",mainImage_parentDIV.querySelector('a#prev').href); mainImage_clone.setAttribute("prevOnclick",mainImage_parentDIV.querySelector('a#prev').getAttribute("onclick")); mainImage_clone.setAttribute("nextURL",mainImage_parentDIV.querySelector('a#next').href); mainImage_clone.setAttribute("nextOnclick",mainImage_parentDIV.querySelector('a#next').getAttribute("onclick")); targetURL = mainImage_clone.getAttribute("nextURL"); sendInfo(targetURL); scrollMode_DIV.addEventListener('click', function(){ if (scrollMode_DIV.offsetHeight==0) { document.body.style.overflow="hidden"; scrollMode_DIV.style.top = "0px"; scrollMode_DIV.style.height = window.innerHeight + "px"; scrollMode_DIV.style.transition = ""; scrollMode_DIV.scrollTop = mainImage_clone.offsetTop + mainImage_clone.offsetHeight - window.innerHeight; var tmpInterval = setInterval(function(){ if(scrollMode_DIV.scrollTop <= (mainImage_clone.offsetTop + mainImage_clone.offsetHeight)){ scrollMode_DIV.scrollTop += ((((mainImage_clone.offsetTop + mainImage_clone.offsetHeight) - scrollMode_DIV.scrollTop)/200)+10); } else { clearInterval(tmpInterval); } },((scrollMode_DIV.scrollTop - (mainImage_clone.offsetTop + mainImage_clone.offsetHeight))/200)); scrollMode_DIV.style.transition = "all 0.5s ease 0.5s"; } else { var imgObjs = scrollMode_DIV.querySelectorAll("img"); for (var i = 0; i < imgObjs.length; i++) { if ( scrollMode_DIV.scrollTop < imgObjs[i].offsetTop ) { currentImageScrollTop = scrollMode_DIV.scrollTop; if(imgObjs[i-1]){ mainImage_clone = imgObjs[i-1]; currentImageScrollTop = scrollMode_DIV.scrollTop - mainImage_clone.offsetTop; } var a = document.createElement("a"); a.setAttribute("href", "#"); a.setAttribute("onclick",imgObjs[i].getAttribute("prevOnclick")); document.body.appendChild(a); a.style.display = "none"; a.onclick(); break; } } scrollMode_DIV.style.top = window.innerHeight + "px"; scrollMode_DIV.style.height = "0px"; window.focus(); setTimeout(function(){ document.body.style.overflow=""; }, 510); if(currentImageScrollTop){ window.scrollTo(0,currentImageScrollTop); }else{ window.scrollTo(0,Math.max(window.pageYOffset,document.documentElement.scrollTop)*0.98); } if (document.body.getAttribute('listener') !== 'true') { document.body.addEventListener("wheel",openscrollMode_DIV,false); document.body.addEventListener("scroll",openscrollMode_DIV,false); document.body.addEventListener("keydown",openscrollMode_DIV,false); } } }); window.addEventListener('resize', function(){ scrollMode_DIV.style.transition = ""; scrollMode_DIV.style.height = window.innerHeight + "px"; var lastscrollHeight = scrollMode_DIV.scrollHeight; scrollMode_DIV.querySelectorAll("img").forEach(function(imgObj){ imgObj.style.width = "100%"; var mainImage_clone_originalWidth = imgObj.getAttribute("originalWidth"); var mainImage_clone_originalHeight = imgObj.getAttribute("originalHeight"); imgObj.style.height = (mainImage_clone_originalHeight*imgObj.offsetWidth)/mainImage_clone_originalWidth + "px"; }); scrollMode_DIV.style.transition = "all 0.5s ease 0.5s"; scrollMode_DIV.scrollTop = scrollMode_DIV.scrollTop*(scrollMode_DIV.scrollHeight/lastscrollHeight); }); var openscrollMode_DIV = function(){ var currentScrollTop = window.pageYOffset || document.documentElement.scrollTop; if ( (currentScrollTop >= lastScrollTop) && (currentScrollTop + window.innerHeight >= document.body.offsetHeight*0.99) ) { scrollMode_DIV.click(); scrollMode_DIV.focus(); this.removeEventListener('wheel', arguments.callee); this.removeEventListener('scroll', arguments.callee); this.removeEventListener('keydown', arguments.callee); } lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop; } document.body.addEventListener("wheel",openscrollMode_DIV,false); document.body.addEventListener("scroll",openscrollMode_DIV,false); document.body.addEventListener("keydown",openscrollMode_DIV,false); var loadpages = function(event){ if (scrollMode_DIV.scrollTop + window.innerHeight >= scrollMode_DIV.scrollHeight*0.7) { scrollMode_DIV.style.height = window.innerHeight + "px"; var imgObjs = scrollMode_DIV.querySelectorAll("img"); if (imgObjs[imgObjs.length-1].getAttribute("nextURL") != targetURL) { currentImageURL = imgObjs[imgObjs.length-1].getAttribute("nextURL"); currentImageOnclick = imgObjs[imgObjs.length-1].getAttribute("nextOnclick"); targetURL = imgObjs[imgObjs.length-1].getAttribute("nextURL"); sendInfo(targetURL); } } } scrollMode_DIV.addEventListener("wheel",loadpages,false); scrollMode_DIV.addEventListener("scroll",loadpages,false); scrollMode_DIV.addEventListener("keydown",loadpages,false); function sendInfo(url){ if (window.XMLHttpRequest) { request = new XMLHttpRequest(); } else if (window.ActiveXObject) { request = new ActiveXObject("Microsoft.XMLHTTP"); } try { request.onreadystatechange = getInfo; request.open("GET", url, true); request.send(); } catch (e) { console.log("Unable to connect to server"); } } function getInfo(){ if (request.readyState == 4) { var getInfoText = request.responseText; var parser = new DOMParser(); var getInfoBody = parser.parseFromString(getInfoText,"text/html").body; var getInfoImage = getInfoBody.querySelector("#img"); var getInfoImage_parentDIV = getInfoImage.parentNode.parentNode.parentNode; getInfoImage.setAttribute("prevURL",getInfoImage_parentDIV.querySelector('a#prev').href); getInfoImage.setAttribute("prevOnclick",getInfoImage_parentDIV.querySelector('a#prev').getAttribute("onclick")); getInfoImage.setAttribute("nextURL",getInfoImage_parentDIV.querySelector('a#next').href); getInfoImage.setAttribute("nextOnclick",getInfoImage_parentDIV.querySelector('a#next').getAttribute("onclick")); getInfoImage.setAttribute("currentImageURL",currentImageURL); getInfoImage.setAttribute("currentImageOnclick",currentImageOnclick); putImage(getInfoImage); } } function putImage(targetImage){ var toLoadImage = scrollMode_DIV.appendChild(targetImage); toLoadImage.style.maxWidth = ""; toLoadImage.style.maxHeight = ""; var toLoadImage_originalWidth = toLoadImage.offsetWidth; var toLoadImage_originalHeight = toLoadImage.offsetHeight; toLoadImage.setAttribute("originalWidth",toLoadImage_originalWidth); toLoadImage.setAttribute("originalHeight",toLoadImage_originalHeight); toLoadImage.style.width = "100%"; toLoadImage.style.height = (toLoadImage_originalHeight*toLoadImage.offsetWidth)/toLoadImage_originalWidth + "px"; } }