双击切换滚动状态,适配via浏览器的阅读模式
// ==UserScript== // @name 自动滚动:双击切换滚动状态 // @name:en AutoScroll(Double-click) // @name:zh-CN 自动滚动:双击切换滚动状态 // @name:zh-TW 自動滾動:雙擊切換滾動狀態 // @namespace https://viayoo.com/ // @version 0.1.1 // @author 百度文心一言 Baidu ERNIE // @description 双击切换滚动状态,适配via浏览器的阅读模式 // @description:en Double-click the screen to switch scrolling.Support reader mode for via browser // @description:zh-CN 双击切换滚动状态,适配via浏览器的阅读模式 // @description:zh-TW 雙擊切換滾動狀態,適配via瀏覽器的閱讀模式 // @run-at document-start // @match *://*/* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; let scrollTimer = null; let lastScrollTop = 0; /*ScrollSpeed 滚动速度*/ let scrollSpeed = 2; let autoScrollElement = null; let isAutoScrolling = false; let isElementScrolling = false; document.addEventListener('dblclick', function() { if (isAutoScrolling) { clearInterval(scrollTimer); isAutoScrolling = false; return; } autoScrollElement = document.querySelector('.via-reader-body'); isElementScrolling = !!autoScrollElement; if (!isElementScrolling) { autoScrollElement = window; } let scrollTop = autoScrollElement.scrollTop || window.pageYOffset; lastScrollTop = scrollTop; scrollTimer = setInterval(function() { if (!isElementScrolling) { if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) { clearInterval(scrollTimer); isAutoScrolling = false; return; } window.scrollBy(0, scrollSpeed); } else { if (autoScrollElement.scrollTop + autoScrollElement.clientHeight >= autoScrollElement.scrollHeight) { clearInterval(scrollTimer); isAutoScrolling = false; autoScrollElement.style.overflow = 'auto'; return; } autoScrollElement.scrollTop += scrollSpeed; } }, 20);/*20 滚动间隔*/ isAutoScrolling = true; }); if (autoScrollElement) { autoScrollElement.addEventListener('scroll', function() { if (!isAutoScrolling) return; let scrollTop = autoScrollElement.scrollTop || window.pageYOffset; if (scrollTop !== lastScrollTop) { clearInterval(scrollTimer); isAutoScrolling = false; } lastScrollTop = scrollTop; }); } })();