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.9.29 - 2016-01-11 - goofed a bit on the last update, fixed
New: v1.9.30 - 2016-02-08 - fixed senmanga (and raw.senmanga) chapter switching; upgraded style priority for reader bg and font and properly cleared iniline body styles; added image url to "reload?" tooltip

  • --- /tmp/diffy20250304-680424-1h2d04 2025-03-04 02:48:45.367862227 +0000
  • +++ /tmp/diffy20250304-680424-iooq8v 2025-03-04 02:48:45.367862227 +0000
  • @@ -1,7 +1,7 @@
  • // ==UserScript==
  • // @name Manga Loader
  • // @namespace http://www.fuzetsu.com/MangaLoader
  • -// @version 1.9.29
  • +// @version 1.9.30
  • // @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 2014+, fuzetsu
  • // @noframes
  • @@ -346,7 +346,10 @@
  • curchap: 'select[name=chapter]',
  • nextchap: function(prev) {
  • var next = extractInfo('select[name=chapter]', {type: 'value', val: (prev ? 1 : -1)});
  • - if(next) return window.location.href.replace(/\/[^\/]*\/[0-9]+\/?$/, '') + '/' + next + '/1';
  • + if(next) {
  • + var manga = window.location.pathname.slice(1).split('/')[0];
  • + return window.location.origin + '/' + manga + '/' + next + '/1';
  • + }
  • +
  • },
  • prevchap: function() {
  • return this.nextchap(true);
  • @@ -366,7 +369,10 @@
  • curchap: 'select[name=chapter]',
  • nextchap: function(prev) {
  • var next = extractInfo('select[name=chapter]', {type: 'value', val: (prev ? 1 : -1)});
  • - if(next) return window.location.href.replace(/\/[^\/]*\/[0-9]+\/?$/, '') + '/' + next + '/1';
  • + if(next) {
  • + var manga = window.location.pathname.slice(1).split('/')[0];
  • + return window.location.origin + '/' + manga + '/' + next + '/1';
  • + }
  • +
  • },
  • prevchap: function() {
  • return this.nextchap(true);
  • @@ -1125,8 +1131,8 @@
  • var getViewer = function(prevChapter, nextChapter) {
  • var viewerCss = toStyleStr({
  • - 'background-color': 'black',
  • - 'font': '0.813em courier',
  • + 'background-color': 'black !important',
  • + 'font': '0.813em courier !important',
  • 'text-align': 'center',
  • }, 'body'),
  • imagesCss = toStyleStr({
  • @@ -1210,6 +1216,8 @@
  • var title = document.title;
  • document.head.innerHTML = '<meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">';
  • document.title = title;
  • + document.body.className = '';
  • + document.body.style = '';
  • // navigation
  • var nav = '<div class="ml-chap-nav">' + (prevChapter ? '<a class="ml-chap-prev" href="' + prevChapter + '">Prev Chapter</a> ' : '') +
  • '<a class="ml-exit" href="' + location.href + '" data-exit="true">Exit</a> ' +
  • @@ -1497,7 +1505,7 @@
  • image.onload = null;
  • image.style.backgroundColor = 'white';
  • image.style.cursor = 'pointer';
  • - image.title = 'Reload?';
  • + image.title = 'Reload "' + src + '"?';
  • image.src = IMAGES.refresh_large;
  • image.onclick = function() {
  • image.onload = callback;