Greasy Fork is available in English.
控制网页自动向上滑动的速度
// ==UserScript== // @name 滑动器6 // @namespace your-namespace // @version 1.0 // @description 控制网页自动向上滑动的速度 // @author Your Name // @match http://www.htmanga3.top/* // @grant none // ==/UserScript== if (location.href.indexOf('https://www.baidu.com/s') == 0 || location.href.indexOf('http://www.baidu.com/s') == 0) { var jq = jQuery.noConflict(); Compatible(jq); var chaoxing = false; } else if (location.href.indexOf('chaoxing') != -1) { var jq = jQuery.noConflict(); Compatible(jq); var chaoxing = true; } else { Compatible(jQuery); var chaoxing = false; } function Compatible(jq) { var box = jq('<div class="move-box"><input type="number" class="move-val" value="1" title="速度"/><p class="start" title="开始/暂停">▶</p><p class="reverse" title="反方向">▼</p></div>'); jq('body').append(box); (function () { jq('.move-box').css({ 'width': '40px', 'height': '90px', 'background': '#fff', 'box-shadow': '0 0 4px 0 #ccc', 'border-radius': '8px', 'user-select': 'none', 'overflow': 'hidden', 'position': 'fixed', 'top': '80px', 'left': '4px', 'z-index': 99999999 }); jq('.move-val').css({ 'width': '100%', 'height': '30px', 'padding': 0, 'color': '#000', 'border': 'none', 'outline': 'none', 'font-size': '18px', 'text-align': 'center' }) jq('.start').css({ 'margin': 0, 'width': '100%', 'height': '30px', 'line-height': '30px', 'text-align': 'center', 'background': 'red', 'color': '#fff', 'font-size': '20px', 'cursor': 'pointer' }) jq('.reverse').css({ 'margin': 0, 'width': '100%', 'height': '30px', 'line-height': '30px', 'text-align': 'center', 'color': '#ccc', 'cursor': 'pointer' }) }()) var elinput = document.getElementsByClassName('move-val')[0], elstart = document.getElementsByClassName('start')[0], elreverse = document.getElementsByClassName('reverse')[0], speed = 1, isMove = false, isHide = true, flag = false, lookTop = 0, timers = null, scrollTimer = null; // 新增定时器 // Listen for double tap events var clickCount = 0; var lastClickTime, timeoutId; function handleClick() { clickCount++; if (clickCount === 1) { lastClickTime = new Date().getTime(); timeoutId = setTimeout(function () { clickCount = 0; }, 300); } else if (clickCount === 2) { clearTimeout(timeoutId); clickCount = 0; elstart.click(); // trigger scrolling function } } window.addEventListener('touchstart', handleClick); elinput.oninput = setIn; function setIn() { if (this.value > 10) { this.value = 10; } if (this.value < -10) { this.value = -10; } if (this.value == '') { this.value = 0; } speed = Number(this.value); speed < 0 ? elreverse.innerText = '▲' : elreverse.innerText = '▼'; } elstart.onclick = function () { if (isMove) { this.innerText = '▶'; flag = false; isMove = false; isHide = true; clearTimeout(scrollTimer); // 停止滚动定时器 } else { this.innerText = '◉'; flag = true; isMove = true; isHide = false; move(); // 开始滚动 } hideShow(); } elreverse.onclick = function () { speed = -speed; speed < 0 ? this.innerText = '▲' : this.innerText = '▼'; } function move() { if (flag) { var imglook = jq('.imglook'); if (imglook.length === 0) { window.scrollBy(0, speed); if (chaoxing && jq(window).height() + jq(window).scrollTop() >= jq(document).height() - 180) { if ($('#loadbutton').length == 1) { clearTimeout(timers); $('#loadbutton').click(); timers = setTimeout(() => { isMove ? '' : elstart.click() }, 200) } } if (jq(window).height() + jq(window).scrollTop() >= jq(document).height() - 2 || jq(window).scrollTop() == 0) { elstart.innerText = '▶'; flag = false; isMove = false; isHide = true; hideShow(); return; // 结束滚动 } } else { // 超新课程资料文件预览 var loopNum = 0 lookTop = imglook[0].scrollTop imglook[0].scrollBy(0, speed) function loopTest() { loopNum++ setTimeout(() => { if (imglook[0].scrollTop === lookTop) { loopTest() if (loopNum > 6) { elstart.innerText = '▶'; flag = false; isMove = false; isHide = true; hideShow(); return; // 结束滚动 } } }, 200) } if (imglook[0].scrollTop === lookTop) { loopTest() } } // 滚动结束后停止1秒,再次启动滚动 clearTimeout(scrollTimer); scrollTimer = setTimeout(function () { move(); }, 2000); } } jq(document).keydown((e) => { var event = e || window.event; if (event.keyCode == 32) { elstart.click(); return false; } if (event.keyCode == 38) { elinput.value++; } if (event.keyCode == 40) { elinput.value--; } setIn.call(elinput); }) // 隐藏 hideShow() function hideShow() { // if(!isHide) return; var timer2 = null; function hide() { jq('.move-box').stop().animate({ 'left': '-30px' }, 400) } timer2 = setTimeout(hide, 6000); jq('.move-box').hover(function () { // if(!isHide) return; clearInterval(timer2); jq(this).stop().animate({ 'left': '4px' }, 600) }, function () { // if(!isHide) return; timer2 = setTimeout(hide, 6000); }) } }