Greasy Fork is available in English.

read auto scroll

auto scroll

// ==UserScript==
// @name         read auto scroll
// @include      *
// @supportURL   https://github.com/sxlgkxk/browser_script/issues
// @version      0.1
// @description  auto scroll
// @namespace    http://sxlgkxk.github.io/
// @author       sxlgkxk
// @icon         http://sxlgkxk.github.io/im/avatar.jpg
// @license      MIT
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_xmlhttpRequest
// ==/UserScript==

(function(){

let is_move=(localStorage.getItem('is_move')=='true');
let speed=1;
let entering_nextpage=false;
let speed_cnt=0;
let speed_factor=localStorage.getItem('speed_factor');
speed_factor=speed_factor?parseInt(speed_factor):1

// move function
function move() {
	if (is_move) {
		speed_cnt=(speed_cnt+1)%speed_factor;
		if(speed_cnt==0)
			window.scrollBy(0, speed);
		if((window.innerHeight + window.scrollY) +5 >= document.body.scrollHeight){
			notepanel = document.querySelector("textarea.notePanel");
			if (!notepanel || notepanel.hidden)
				if (!entering_nextpage){
					entering_nextpage=true
					setTimeout(()=>{
						let next_dom=document.querySelector('body > div.mainContainer.clearfix > div.chapter-detail > div.container.full > div.control-group > a.chapter-direction.nextChapter')
						if(!next_dom) next_dom=document.querySelector('#content-wrapper > section > div > div > div.col-md-8.col-xs-12.section-left > div.content.wl > div > div.text-right > a')
						if(location.href+'#'!=next_dom.href){
							setInterval(()=>{
								notepanel = document.querySelector("textarea.notePanel");
								if (!notepanel || notepanel.hidden)
									location.href=next_dom.href
							},1000*3)
						}
					}, 1000*60)
				}
		}
	}
	requestAnimationFrame(move);
}
move()

// move button dom insert
body=document.querySelector('body')
move_button=document.createElement('button')
document.body.before(move_button)

// move button style
move_button.innerHTML='move'
move_button.style.fontWeight='bold'
move_button.style.color='#fff'
move_button.style.backgroundColor='#333'
move_button.style.position='fixed'
move_button.style.bottom='100px'
move_button.style.right='50px'
move_button.style.width='50px'
move_button.style.height='50px'
move_button.style.opacity=0.8
move_button.style.zIndex=1
move_button.onclick=()=>{
	if(document.documentElement["scrollTop"]<50){
		new_speed_factor=prompt("speed factor?", speed_factor)
		speed_factor=new_speed_factor?parseInt(new_speed_factor):speed_factor
		localStorage.setItem("speed_factor", speed_factor)
	}
	is_move=!is_move;
	if(!is_move)
		setTimeout(()=>{
			is_move=true;
			localStorage.setItem('is_move', is_move);
		}, 1000*30)

	localStorage.setItem('is_move', is_move);
}

// move shortcut
document.addEventListener("keydown", function(event) {
	if (event.ctrlKey && event.altKey && (event.key=="m"||event.key=="d")){
		move_button.click()
	}
});

})();