漫画猫阅读器

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

当前为 2022-06-28 提交的版本,查看 最新版本

// ==UserScript==
// @name        漫画猫阅读器
// @namespace   Violentmonkey Scripts
// @match       https://www.maofly.com/manga/*/*
// @grant       none
// @version     0.1
// @author      chemPolonium
// @description 漫画猫阅读器,重排页面,按键翻页,奇偶切换,单双页切换
// @license     GPLv3
// ==/UserScript==

/* jshint esversion: 6 */
/* jshint multistr: true */

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 = '50vw';
  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;
  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;
  }
  setSingleAlign(loadedPageNum - 1);
});

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址