Manga Loader (unmaintained)

Support for over 70 sites! Loads manga chapter into one page in a long strip format, supports switching chapters, minimal script with no dependencies, easy to implement new sites, loads quickly and works on mobile devices through bookmarklet

Old: v1.11.8 - 2017-01-25 - fixed zooming messing up height of page and making it hard to load more images
New: v1.11.9 - 2017-02-04 - fixed sense scans; added thecatscans and yonkouproud; added batoto chapter change fix (thanks @Morten); only override hotkeys that are actually bound to something

  • --- /tmp/diffy20250426-3454863-xr6ux1 2025-04-26 05:07:22.819206520 +0000
  • +++ /tmp/diffy20250426-3454863-ferg6d 2025-04-26 05:07:22.819206520 +0000
  • @@ -1,7 +1,7 @@
  • // ==UserScript==
  • // @name Manga Loader
  • // @namespace http://www.fuzetsu.com/MangaLoader
  • -// @version 1.11.8
  • +// @version 1.11.9
  • // @description Support for over 70 sites! Loads manga chapter into one page in a long strip format, supports switching chapters, minimal script with no dependencies, easy to implement new sites, loads quickly and works on mobile devices through bookmarklet
  • // @copyright 2016+, fuzetsu
  • // @noframes
  • @@ -83,7 +83,7 @@
  • // @match *://reader.roseliascans.com/read/*
  • // @match *://mangatopia.net/slide/read/*
  • // @match *://www.twistedhelscans.com/read/*
  • -// @match *://reader.sensescans.com/reader/read/*
  • +// @match *://sensescans.com/reader/read/*
  • // @match *://reader.kireicake.com/read/*
  • // @match *://substitutescans.com/reader/read/*
  • // @match *://mangaichiscans.mokkori.fr/fs/read/*
  • @@ -100,11 +100,12 @@
  • // @match *://kobato.hologfx.com/reader/read/*
  • // @match *://abandonedkittenscans.mokkori.fr/reader/read/*
  • // @match *://jaiminisbox.com/reader/read/*
  • -// @match *://reader.sensescans.com/read/*
  • // @match *://*.gomanga.co/reader/read/*
  • // @match *://reader.manga-download.org/read/*/*
  • // @match *://*.manga-ar.net/manga/*/*/*
  • // @match *://*.helveticascans.com/reader/read/*
  • +// @match *://reader.thecatscans.com/read/*
  • +// @match *://yonkouprod.com/reader/read/*
  • // -- FOOLSLIDE END
  • // ==/UserScript==
  • @@ -185,8 +186,16 @@
  • curchap: 'select[name=chapter_select]',
  • numchaps: 'select[name=chapter_select]',
  • nextchap: function(prev) {
  • - var link = extractInfo('select[name=chapter_select]', {type: 'value', val: prev ? 1 : -1});
  • - return link && link.replace(/https?/, document.location.href.split(':')[0]); // fix for batotos broken https pages
  • + //var link = extractInfo('select[name=chapter_select]', {type: 'value', val: prev ? 1 : -1});
  • + //return link && link.replace(/https?/, document.location.href.split(':')[0]); // fix for batotos broken https pages
  • + var menu = getEls('div.moderation_bar > ul > li', getEl('#reader'));
  • + for (var i = 0; i != menu.length; i += 1) {
  • + var img = getEl('img', menu[i]);
  • + if (img && img.title == (prev ? "Previous Chapter" : "Next Chapter")) {
  • + return img.parentNode.href.replace(/https?/, document.location.href.split(':')[0]);
  • + }
  • + }
  • + return null;
  • +
  • },
  • prevchap: function() {
  • return this.nextchap(true);
  • @@ -648,7 +657,7 @@
  • "reader.roseliascans.com/read/.+",
  • "mangatopia.net/slide/read/.+",
  • "www.twistedhelscans.com/read/.+",
  • - "reader.sensescans.com/reader/read/.+",
  • + "sensescans.com/reader/read/.+",
  • "reader.kireicake.com/read/.+",
  • "substitutescans.com/reader/read/.+",
  • "mangaichiscans.mokkori.fr/fs/read/.+",
  • @@ -667,11 +676,12 @@
  • "kobato.hologfx.com/reader/read/.+",
  • "jaiminisbox.com/reader/read/.+",
  • "abandonedkittenscans.mokkori.fr/reader/read/.+",
  • - "reader.sensescans.com/read/.+",
  • "gomanga.co/reader/read/.+",
  • "reader\.manga-download\.org/read/.+",
  • "(www\.)?manga-ar\.net/manga/.+/.+/.+",
  • - "helveticascans.com/reader/read/.+"
  • + "helveticascans.com/reader/read/.+",
  • + "reader.thecatscans.com/read/.+",
  • + "yonkouprod.com/reader/read/.+",
  • ].join('|') + ")",
  • img: function() {
  • return W.pages[W.current_page].url;
  • @@ -1856,6 +1866,8 @@
  • return;
  • }
  • var code = evt.which || evt.charCode || evt.keyCode;
  • + // stop propagation if key is registered
  • + if(code in UI.keys) evt.stopPropagation();
  • // perform action
  • switch(code) {
  • case UI.keys.PREV_CHAP:
  • @@ -1886,9 +1898,6 @@
  • case UI.keys.RESET_ZOOM:
  • changeZoom('=', UI.images);
  • break;
  • - default:
  • - evt.stopPropagation();
  • - break;
  • }
  • }, true);
  • return UI;