您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Allows you to scroll through comics, rather than clicking.
// ==UserScript== // @name Webcomic Reader // @description Allows you to scroll through comics, rather than clicking. // @author HIDDEN-lo // @version 1.0 // @match *://akuma.moe/* // @license MIT // @run-at document-start // @namespace https://greasyfork.org/users/1206627 // ==/UserScript== (function() { 'use strict'; // Used to get the last page # for generating the URL function findHighestOptionValue() { var options = document.querySelectorAll('option[value]'); var highestValue = -Infinity; options.forEach(function(option) { var value = parseInt(option.getAttribute('value'), 10); if (!isNaN(value) && value > highestValue) { highestValue = value; } }); return highestValue; } // Function to check if the current page is in reading mode function isReadingMode() { var url = window.location.href; return /\/\d+$/.test(url); // Check if the URL ends with a number } // Function to extract the current page number from the URL function getCurrentPageNumber() { var url = window.location.href; var matches = url.match(/\/(\d+)$/); if (matches && matches[1]) { return parseInt(matches[1], 10); } return 0; } // Function to add an image to the parent element with id "image-container" function addImageToParentContainer(imgLink) { var parentContainer = document.getElementById('image-container'); // Parent container if (parentContainer) { var imgElement = document.createElement('img'); imgElement.setAttribute('src', imgLink); parentContainer.appendChild(imgElement); } } // Function to load and add images from subsequent pages function loadAndAddImagesFromPage(pageNumber) { var pageUrl = window.location.href.replace(/\/\d+$/, '/' + pageNumber); var xhr = new XMLHttpRequest(); xhr.open('GET', pageUrl, true); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { console.log('Loaded images from page:', pageUrl); var html = xhr.responseText; var matches = html.match(/<img[^>]+src=["']([^"']+)/gi); if (matches) { matches.forEach(function(match, index) { var srcMatch = match.match(/src=["']([^"']+)/i); if (srcMatch && srcMatch[1]) { var imgLink = srcMatch[1]; // Check if the imgLink matches the original page's src if (imgLink !== getOriginalPageSrc()) { addImageToParentContainer(imgLink); // Add the image to the parent container } } }); } // Continue loading and adding images from the next page loadAndAddImagesFromPage(pageNumber + 1); } }; xhr.send(); } // Function to get the original page's src function getOriginalPageSrc() { var imgElement = document.querySelector('img'); // Get the first image on the page if (imgElement) { return imgElement.getAttribute('src'); } return ''; } // Function to create and trigger the button function createButton() { // Create a button to trigger the script var button = document.createElement('button'); button.textContent = 'Load Images'; button.style.position = 'fixed'; button.style.top = '10px'; button.style.left = '10px'; button.style.zIndex = '9999'; // Add an event listener to run the script on button click button.addEventListener('click', function() { button.style.display = 'none'; // Hide the button after clicking var currentPageNumber = getCurrentPageNumber(); loadAndAddImagesFromPage(currentPageNumber); // Start loading and adding images from the current page checkURLChange(); markRead(); }); // Add the button to the page if in reading mode if (isReadingMode()) { document.body.appendChild(button); } } function gotoLastPage() { // Remove current page # from URL var currentURL = window.location.href; // Use a regular expression to find the last "/" and any numbers that follow it var regex = /\/(\d+)+$/; var match = currentURL.match(regex); if (match) { var numbersToRemove = match[0]; var updatedURL = currentURL.replace(numbersToRemove, ''); } updatedURL = updatedURL + "/" + findHighestOptionValue(); console.log("Updated URL: ", updatedURL); window.location.href = updatedURL; } function markRead() { // Create a button to trigger the script var button = document.createElement('button'); button.textContent = 'Mark as Read'; button.style.position = 'relative'; button.style.bottom = '40px'; button.style.left = '43.4%'; button.style.zIndex = '9999'; // Add an event listener to run the script on button click button.addEventListener('click', function() { gotoLastPage(); }); // Add the button to the page if in reading mode if (isReadingMode()) { document.body.appendChild(button); } } function checkURLChange() { var currentURL = window.location.href; setInterval(function() { console.log("Checking"); var newURL = window.location.href; if (newURL !== currentURL) { // URL has changed, reload the page location.reload(); } }, 500); // Check every second (1000 milliseconds) } // Call the function to create and trigger the button createButton(); })();