🏠 Home 

自动滚动:双击切换滚动状态

双击切换滚动状态,适配via浏览器的阅读模式


Installer dette script?
// ==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;
});
}
})();