您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
AutoScroll - Automatically scroll down the page, supporting hotkey control switches and speed adjustment (自动向下滚动页面,支持热键控制开关和速度调节)
// ==UserScript== // @name AutoScroll2 // @description AutoScroll - Automatically scroll down the page, supporting hotkey control switches and speed adjustment (自动向下滚动页面,支持热键控制开关和速度调节) // @include http* // @version 1.0.2 // @author Eilen https://github.com/EilenC // @grant none // @namespace https://gf.qytechs.cn/users/319354 // @supportURL https://github.com/EilenC/Tampermonkey-Scripts/blob/master/AutoScroll2/AutoScroll2.js // ==/UserScript== (function (document) { 'use strict'; function roundToTwoDecimalPlaces(number) { return Number(number.toFixed(2)); } let notificationTimer = null; let notification = document.createElement('div'); let tipsTime = 300; function showNotification(message, duration) { clearTimeout(notificationTimer); notification.textContent = message; notification.style.position = 'fixed'; notification.style.top = '50%'; notification.style.left = '50%'; notification.style.transform = 'translate(-50%, -50%)'; notification.style.background = 'black'; notification.style.color = 'white'; notification.style.fontWeight = 'bold'; notification.style.fontSize = '40px'; notification.style.padding = '20px'; notification.style.borderRadius = '10px'; notification.style.zIndex = '9999'; document.body.appendChild(notification); notificationTimer = setTimeout(function () { document.body.removeChild(notification); notificationTimer = null; }, duration); } let scrollY = 0; let scrollSpeed = 0.5; // 默认滚动速度 let isScrolling = false; let lastScrollTime = performance.now(); const targetFrameDelay = 1000 / 60; // 目标帧率为每秒 60 帧 let animationFrameId = null; function scrollAnimation(currentTime) { if (isScrolling) { const elapsedTime = currentTime - lastScrollTime; if (elapsedTime >= targetFrameDelay) { const deltaScroll = scrollSpeed * (elapsedTime / targetFrameDelay); scrollY += deltaScroll; window.scrollTo(0, scrollY); lastScrollTime = currentTime; } animationFrameId = requestAnimationFrame(scrollAnimation); } else { cancelAnimationFrame(animationFrameId); animationFrameId = null; } } // 开始滚动 function startScroll() { isScrolling = true; scrollY = window.scrollY || document.documentElement.scrollTop; lastScrollTime = performance.now(); animationFrameId = requestAnimationFrame(scrollAnimation); } // 停止滚动 function stopScroll() { isScrolling = false; if (animationFrameId !== null) { cancelAnimationFrame(animationFrameId); animationFrameId = null; } scrollY = 0; // 清空滚动位置 lastScrollTime = 0; // 重置上次滚动时间 } let lastKeyDownTime = 0; let keyDownCount = 0; // 键盘事件处理 document.addEventListener('keydown', (event) => { let currentTime = new Date().getTime(); switch (event.key) { case 's': case 'ArrowLeft': if(isScrolling){ let step = 0.01 if (scrollSpeed > 2) { step = 0.1 } scrollSpeed = Math.max(scrollSpeed - step, 0.01); showNotification('AutoScroll:Speed: ' + roundToTwoDecimalPlaces(scrollSpeed), tipsTime); } break; case 'a': case 'ArrowRight': if(isScrolling){ scrollSpeed = Math.min(scrollSpeed + 0.1, 99); showNotification('AutoScroll:Speed: ' + roundToTwoDecimalPlaces(scrollSpeed), tipsTime); } break; case "`": if (currentTime - lastKeyDownTime < 300) { keyDownCount++; } else { keyDownCount = 1; } lastKeyDownTime = currentTime; if (keyDownCount === 2) { if (isScrolling) { stopScroll(); showNotification('AutoScroll:Off', tipsTime); } else { startScroll(); showNotification('AutoScroll:On', tipsTime); } keyDownCount = 0; } break; } }); })(document);
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址