适用场景 看长文、小说或长贴时,解放双手,让浏览器自动向下滚动。
操作方法
打开浏览器控制台 -> 找到 Console -> 粘贴代码并回车,即可启动自动滚动。
(() => {
// 如果之前跑过,先停掉旧脚本
if (window.__autoScrollCtl?.stop) {
window.__autoScrollCtl.stop();
}
const STEP_PX = 260; // 每次下滑距离
const INTERVAL_MS = 1500; // 每次间隔,约为之前的 1/3
const SMOOTH = true; // 是否平滑滚动
const MAX_IDLE_TICKS = 20; // 连续多少次几乎没动就认为到底了
const scroller = document.scrollingElement || document.documentElement;
let timer = null;
let running = false;
let lastTop = scroller.scrollTop;
let idleTicks = 0;
function tick() {
const before = scroller.scrollTop;
window.scrollBy({
top: STEP_PX,
left: 0,
behavior: SMOOTH ? "smooth" : "auto",
});
setTimeout(
() => {
const after = scroller.scrollTop;
const moved = Math.abs(after - before);
if (moved < 5) {
idleTicks += 1;
} else {
idleTicks = 0;
}
lastTop = after;
if (idleTicks >= MAX_IDLE_TICKS) {
console.log("[auto-scroll] 可能已经到底,自动暂停");
pause();
}
},
Math.min(900, Math.max(300, INTERVAL_MS - 200)),
);
}
function start() {
if (running) return;
running = true;
timer = setInterval(tick, INTERVAL_MS);
console.log(`[auto-scroll] 已启动: ${STEP_PX}px / ${INTERVAL_MS}ms`);
}
function pause() {
if (!running) return;
clearInterval(timer);
timer = null;
running = false;
console.log("[auto-scroll] 已暂停");
}
function resume() {
if (running) return;
idleTicks = 0;
start();
}
function stop() {
clearInterval(timer);
timer = null;
running = false;
idleTicks = 0;
console.log("[auto-scroll] 已停止");
}
window.__autoScrollCtl = {
start,
pause,
resume,
stop,
status() {
return {
running,
top: scroller.scrollTop,
height: scroller.scrollHeight,
viewport: window.innerHeight,
stepPx: STEP_PX,
intervalMs: INTERVAL_MS,
idleTicks,
};
},
};
start();
})();
过程控制 在 Console 继续输入以下命令可控制滚动:
- 暂停:
__autoScrollCtl.pause() - 继续:
__autoScrollCtl.resume() - 停止:
__autoScrollCtl.stop() - 查看状态:
__autoScrollCtl.status()