🏠 Home 

漫画猫阅读器

漫画猫阅读器,重排页面,按键翻页,奇偶切换,单双页切换


Install this script?
// ==UserScript==
// @name        漫画猫阅读器
// @namespace   Violentmonkey Scripts
// @match       https://www.maofly.com/manga/*/*
// @grant       none
// @version     0.5
// @author      chemPolonium
// @description 漫画猫阅读器,重排页面,按键翻页,奇偶切换,单双页切换
// @license     GPLv3
// ==/UserScript==
/* jshint esversion: 6 */
/* jshint multistr: true */
(function () {
"use strict";
let comicContainer = document.getElementsByClassName("container-fluid comic-detail p-0")[0];
comicContainer.style.maxWidth = '100%';
let comicList = document.getElementsByClassName("img-content")[0];
comicList.style.display = 'grid';
comicList.style.direction = 'rtl';
let comicListChildren = comicList.children;
let currentImageIndex = 0;
let pageNumPerScreen = 2;
let loadedPageNum = 1;
function setstyle(target) {
target.style = {};
target.style.height = '100vh';
target.style.width = '100%';
target.style.objectFit = 'contain';
}
function moveImageIndex(x) {
let newImageIndex = currentImageIndex + x;
if (newImageIndex < comicList.children.length && newImageIndex >= 0) {
currentImageIndex = newImageIndex;
}
}
function getImage(imageIndex) {
return comicListChildren[imageIndex];
}
function getCurrentImage() {
return getImage(currentImageIndex);
}
function moveToCurrentImage() {
getCurrentImage().scrollIntoView();
}
function onePageDown() {
moveImageIndex(pageNumPerScreen);
moveToCurrentImage();
}
function onePageUp() {
moveImageIndex(-pageNumPerScreen);
moveToCurrentImage();
}
function setSingleAlign(imageIndex) {
if (pageNumPerScreen == 1) {
comicListChildren[imageIndex].style.objectPosition = 'center';
}
if (pageNumPerScreen == 2) {
comicListChildren[imageIndex].style.objectPosition = (imageIndex % 2 == 0) ? 'left' : 'right';
}
}
function setAlign() {
for (let imageIndex = 0; imageIndex < comicListChildren.length; imageIndex++) {
setSingleAlign(imageIndex);
}
}
function setPageNumPerScreen(pageNum) {
comicList.style.gridTemplateColumns = 'repeat(' + String(pageNum) + ', 1fr)';
moveToCurrentImage();
pageNumPerScreen = pageNum;
currentImageIndex -= (currentImageIndex % pageNum);
setAlign();
}
setstyle(comicList.firstElementChild);
moveToCurrentImage();
setPageNumPerScreen(2);
function createTitlePage() {
let titlePage = document.createElement('p');
titlePage.textContent = document.title;
titlePage.style.fontSize = 'xx-large';
titlePage.style.maxWidth = '30vw';
titlePage.style.marginTop = '30%';
titlePage.style.marginRight = '20%';
titlePage.style.whiteSpace = 'normal';
return titlePage;
}
let titlePage = createTitlePage();
let parityChanged = false;
function switchParity() {
if (parityChanged) {
comicListChildren[0].remove();
} else {
comicList.insertAdjacentElement('afterbegin', titlePage);
}
parityChanged = !parityChanged;
setAlign();
moveToCurrentImage();
}
document.addEventListener('keydown', (event) => {
switch (event.code) {
case 'ArrowRight':
goNumPage('next');
break;
case 'ArrowLeft':
goNumPage('pre');
break;
case 'KeyK':
onePageUp();
break;
case 'KeyJ':
onePageDown();
break;
case 'Semicolon':
switchParity();
break;
case 'Digit1':
setPageNumPerScreen(1);
break;
case 'Digit2':
setPageNumPerScreen(2);
break;
default:
console.log('key: ' + event.key + ' code: ' + event.code);
}
});
let firstLoad = true;
comicList.addEventListener('DOMNodeInserted', (event) => {
setstyle(event.target);
if (event.target.className != '') {
loadedPageNum += 1;
}
if (parityChanged) {
setSingleAlign(loadedPageNum);
} else {
setSingleAlign(loadedPageNum - 1);
}
});
})();