您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
manga reader for copymanga, J/K for DOWN/UP, LEFT/RIGHT for previous/next chapter.
当前为
// ==UserScript== // @name Copymanga Simple Read // @namespace http://tampermonkey.net/ // @match https://www.copymanga.com/comic/*/chapter/* // @grant none // @version 1.7 // @author chemPolonium // @description manga reader for copymanga, J/K for DOWN/UP, LEFT/RIGHT for previous/next chapter. // @run-at document-end // ==/UserScript== /* jshint esversion: 6 */ (function() { 'use strict'; document.getElementsByClassName('header')[0].remove(); let comicContainerFluid = document.getElementsByClassName('container-fluid comicContent')[0]; comicContainerFluid.setAttribute('style', 'padding-right: 0px !important; padding-left: 0px !important;'); let comicContainer = comicContainerFluid.children[0]; comicContainer.setAttribute('style', 'max-width: 100vw !important; margin-right: 0px !important; margin-left: 0px !important'); let comicList = comicContainer.children[0]; // let comicList = document.getElementsByClassName('comicContent-list')[0]; // comicList.setAttribute('style', 'padding-top: 0px !important; margin-bottom: 0px !important; width: 100vw !important'); // let headerWhiteSpace = comicList.children[0].children[0].offsetTop; comicList.setAttribute('style', 'padding-top: 0px !important; margin-bottom: 0px !important; max-width: 100vw !important; width: 100vw !important; display:grid;grid-template-columns: repeat(2, 1fr);direction: rtl;'); let currentPageInd = -1; let currentImage; function movePage(x) { currentPageInd += x; currentPageInd = currentPageInd < comicList.children.length ? currentPageInd : comicList.children.length - 1; currentPageInd = currentPageInd >= 0 ? currentPageInd : 1; currentImage = comicList.children[currentPageInd].children[0]; } // window.scrollTo(0, headerWhiteSpace); let evt = new UIEvent('scroll'); function setAlign() { let isLeft = false; let comicListChildren = comicList.children; for (let i = 0; i < comicListChildren.length; i++) { if (isLeft) { comicListChildren[i].setAttribute('style', 'text-align: right;'); } else { comicListChildren[i].setAttribute('style', 'text-align: left;'); } isLeft = !isLeft; } } function onePageDown() { // 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); for (let i = 0; i < 2; i++) { window.dispatchEvent(evt); // dispatch the scroll event for preload movePage(1); // the set will not work if important is not added currentImage.setAttribute('style', 'width:auto !important; height:auto !important;max-height: 100vh !important; max-width: 50vw !important;'); } window.scrollTo(0, currentImage.offsetTop); setAlign(); } function onePageUp() { movePage(-2); window.scrollTo(0, currentImage.offsetTop); } function isParityChanged() { return (comicList.children[0].innerText == 'foo'); } function switchParity() { if (currentPageInd < 0) { onePageDown(); } if (isParityChanged()) { comicList.children[0].remove(); } else { comicList.insertAdjacentHTML('afterbegin','<li>foo</li>'); } setAlign(); } let footer = document.getElementsByClassName('footer')[0]; let footerChildren = footer.children; let prevChapterHref = footerChildren[1].children[0].href; let nextChapterHref = footerChildren[3].children[0].href; let chapterListHref = footerChildren[4].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; case 'KeyL': window.location = chapterListHref; break; case 'Semicolon': switchParity(); break; default: console.log('key: ' + event.key + ' code: ' + event.code); } }); footer.remove(); let firstLoad = true; comicList.addEventListener('DOMNodeInserted', (event) => { if (firstLoad && comicList.children.length > 2) { firstLoad = false; onePageDown(); switchParity(); } }); })();