Copy Manga Simple Read

manga reader for copy manga, J/K for UP/DOWN, LEFT/RIGHT for previous/next page.

当前为 2021-09-06 提交的版本,查看 最新版本

// ==UserScript==
// @name        Copy Manga Simple Read
// @namespace   http://tampermonkey.net/
// @match       https://www.copymanga.com/comic/*/chapter/*
// @grant       none
// @version     1.0
// @author      chemPolonium
// @description manga reader for copy manga, J/K for UP/DOWN, LEFT/RIGHT for previous/next page.
// @run-at      document-end
// ==/UserScript==

(function() {
  'use strict'
  
  console.log('test');
  
  let clientHeight = document.body.clientHeight;
  
  document.getElementsByClassName('header')[0].remove();
  
  let comicList = document.getElementsByClassName('comicContent-list')[0];
  // let headerWhiteSpace = comicList.children[0].children[0].offsetTop;
  
  let currentPageInd = -1;
  let currentImage;
  
  let movePage = ((x) => {
    currentPageInd += x;
    currentPageInd = currentPageInd >= 0 ? currentPageInd : 0;
    currentPageInd = currentPageInd < comicList.children.length ? currentPageInd : comicList.children.length - 1;
    currentImage = comicList.children[currentPageInd].children[0];
  })
  
  // window.scrollTo(0, headerWhiteSpace);
  
  let evt = new UIEvent('scroll');
  
  let onePageDown = (() => {
    movePage(1);
    // the set will not work if important is not added
    currentImage.setAttribute('style', 'height: 100vh !important; width: unset !important;');
    // simulate the scroll for preload
    // the script is like this: total client height / 3 < window scrollY then not load
    // so first scroll Y to 0
    window.scrollTo(0, 0);
    window.dispatchEvent(evt);
    window.scrollTo(0, currentImage.offsetTop);
  })
  
  let onePageUp = (() => {
    movePage(-1);
    window.scrollTo(0, currentImage.offsetTop);
  })
  
  let footer = document.getElementsByClassName('footer')[0];
  let footerChildren = footer.children;
  let prevChapterHref = footerChildren[1].children[0].href;
  let nextChapterHref = footerChildren[3].children[0].href;
  
  document.addEventListener('keydown', (event) => {
    switch (event.code) {
      case 'ArrowRight':
        window.location = nextChapterHref;
        break;
      case 'ArrowLeft':
        window.location = prevChapterHref;
        break;
      case 'KeyK':
        onePageUp();
        break;
      case 'KeyJ':
        onePageDown();
        break;
      default:
        console.log('key: ' + event.key + ' code: ' + event.code);
    }
  });
  
  footer.remove();
  
})();