您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
为微信阅读pc版添加自动滚动和翻页功能
当前为
// ==UserScript== // @name 微信读书自动滚动翻页 // @namespace http://tampermonkey.net/ // @version 0.3 // @description 为微信阅读pc版添加自动滚动和翻页功能 // @author DearCyan // @match https://weread.qq.com/web/reader/* // @icon https://weread-1258476243.file.myqcloud.com/web/wrwebnjlogic/image/reader_top_home.37ef15b1.png // @grant none // @license GPL // ==/UserScript== function createDot() { const controls = document.querySelector('.readerControls') const btn = document.createElement('button') const span = document.createElement('span') span.innerText = 'start' span.style.color = '#d8d8d9' btn.className = 'readerControls_item note' btn.append(span) controls.prepend(btn) return span } function fireKeyEvent(el, evtType, keyCode) { let evtObj; if (document.createEvent) { if (window.KeyEvent) {//firefox 浏览器下模拟事件 evtObj = document.createEvent('KeyEvents'); evtObj.initKeyEvent(evtType, true, true, window, true, false, false, false, keyCode, 0); } else {//chrome 浏览器下模拟事件 evtObj = document.createEvent('UIEvents'); evtObj.initUIEvent(evtType, true, true, window, 1); delete evtObj.keyCode; if (typeof evtObj.keyCode === "undefined") {//为了模拟keycode Object.defineProperty(evtObj, "keyCode", { value: keyCode }); } else { evtObj.key = String.fromCharCode(keyCode); } if (typeof evtObj.ctrlKey === 'undefined') {//为了模拟ctrl键 Object.defineProperty(evtObj, "ctrlKey", { value: true }); } else { evtObj.ctrlKey = true; } } el.dispatchEvent(evtObj); } else if (document.createEventObject) {//IE 浏览器下模拟事件 evtObj = document.createEventObject(); evtObj.keyCode = keyCode el.fireEvent('on' + evtType, evtObj); } } window.onload = function () { let dick let speed = 10 let span = createDot() document.addEventListener('keyup', (e) => { if (e.key == '-') { if (speed < 20) { speed++ } autoScroll(speed) } if (e.key == '+') { if (speed > 1) { speed-- } autoScroll(speed) } if (e.key == 'Enter' || speed <= 0) { autoScroll(0) speed = 10 span.innerText = 'stop' } else { span.innerText = 21 - speed } }) function autoScroll(val) { if (val !== 0) { clearInterval(dick) dick = setInterval( () => { window.scroll(0, window.scrollY + 1); if (getHeight()) { debounce(nextPage)() clearInterval(dick) } }, val ) } else { clearInterval(dick) } } function nextPage() { if (getHeight()) { span.innerText = '>>' fireKeyEvent(document, "keydown", 39) debounce(autoScroll)(speed) debounce(() => span.innerText=speed)() } } function debounce(fn) { let timeout = null; return function () { clearTimeout(timeout); timeout = setTimeout(() => { fn.apply(this, arguments); }, 5000); }; } function getHeight() { let scrollHeight = document.body.scrollHeight - document.body.offsetHeight - 1 return window.scrollY >= scrollHeight } }