read auto scroll

auto scroll

  1. // ==UserScript==
  2. // @name read auto scroll
  3. // @include *
  4. // @supportURL https://github.com/sxlgkxk/browser_script/issues
  5. // @version 0.1
  6. // @description auto scroll
  7. // @namespace http://sxlgkxk.github.io/
  8. // @author sxlgkxk
  9. // @icon http://sxlgkxk.github.io/im/avatar.jpg
  10. // @license MIT
  11. // @grant GM_getValue
  12. // @grant GM_setValue
  13. // @grant GM_xmlhttpRequest
  14. // ==/UserScript==
  15.  
  16. (function(){
  17.  
  18. let is_move=(localStorage.getItem('is_move')=='true');
  19. let speed=1;
  20. let entering_nextpage=false;
  21. let speed_cnt=0;
  22. let speed_factor=localStorage.getItem('speed_factor');
  23. speed_factor=speed_factor?parseInt(speed_factor):1
  24.  
  25. // move function
  26. function move() {
  27. if (is_move) {
  28. speed_cnt=(speed_cnt+1)%speed_factor;
  29. if(speed_cnt==0)
  30. window.scrollBy(0, speed);
  31. if((window.innerHeight + window.scrollY) +5 >= document.body.scrollHeight){
  32. notepanel = document.querySelector("textarea.notePanel");
  33. if (!notepanel || notepanel.hidden)
  34. if (!entering_nextpage){
  35. entering_nextpage=true
  36. setTimeout(()=>{
  37. let next_dom=document.querySelector('body > div.mainContainer.clearfix > div.chapter-detail > div.container.full > div.control-group > a.chapter-direction.nextChapter')
  38. 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')
  39. if(location.href+'#'!=next_dom.href){
  40. setInterval(()=>{
  41. notepanel = document.querySelector("textarea.notePanel");
  42. if (!notepanel || notepanel.hidden)
  43. location.href=next_dom.href
  44. },1000*3)
  45. }
  46. }, 1000*60)
  47. }
  48. }
  49. }
  50. requestAnimationFrame(move);
  51. }
  52. move()
  53.  
  54. // move button dom insert
  55. body=document.querySelector('body')
  56. move_button=document.createElement('button')
  57. document.body.before(move_button)
  58.  
  59. // move button style
  60. move_button.innerHTML='move'
  61. move_button.style.fontWeight='bold'
  62. move_button.style.color='#fff'
  63. move_button.style.backgroundColor='#333'
  64. move_button.style.position='fixed'
  65. move_button.style.bottom='100px'
  66. move_button.style.right='50px'
  67. move_button.style.width='50px'
  68. move_button.style.height='50px'
  69. move_button.style.opacity=0.8
  70. move_button.style.zIndex=1
  71. move_button.onclick=()=>{
  72. if(document.documentElement["scrollTop"]<50){
  73. new_speed_factor=prompt("speed factor?", speed_factor)
  74. speed_factor=new_speed_factor?parseInt(new_speed_factor):speed_factor
  75. localStorage.setItem("speed_factor", speed_factor)
  76. }
  77. is_move=!is_move;
  78. if(!is_move)
  79. setTimeout(()=>{
  80. is_move=true;
  81. localStorage.setItem('is_move', is_move);
  82. }, 1000*30)
  83.  
  84. localStorage.setItem('is_move', is_move);
  85. }
  86.  
  87. // move shortcut
  88. document.addEventListener("keydown", function(event) {
  89. if (event.ctrlKey && event.altKey && (event.key=="m"||event.key=="d")){
  90. move_button.click()
  91. }
  92. });
  93.  
  94. })();