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.4.9 - 2014-12-16 - fixed style bug in opera, there was a conflict with the variable being used to store the style information
New: v1.4.10 - 2014-12-17 - fixed mangafox bug, anchor tag wasn't returning next url the traditional way, added alternative, added option to try and reload images that failed to load on click (experimental for now)

  • --- /tmp/diffy20250512-409497-xnm4tc 2025-05-12 02:46:00.033129400 +0000
  • +++ /tmp/diffy20250512-409497-np06yn 2025-05-12 02:46:00.033129400 +0000
  • @@ -1,7 +1,7 @@
  • // ==UserScript==
  • // @name Manga Loader
  • // @namespace http://www.fuzetsu.com/MangaLoader
  • -// @version 1.4.9
  • +// @version 1.4.10
  • // @description Loads manga chapter into one page in a long strip format, supports switching chapters and works for a variety of sites, minimal script with no dependencies, easy to implement new sites
  • // @copyright 2014+, fuzetsu
  • // @grant GM_getValue
  • @@ -79,10 +79,12 @@
  • nextchap: 'td.c5 + td a',
  • prevchap: 'table.c6 tr:last-child td:last-child a'
  • }, { // MangaFox
  • - match: "^http://mangafox.me/manga/.*/.*/.*",
  • + match: "^http://mangafox.me/manga/[^/]*/[^/]*/[^/]*",
  • img: '#image',
  • - next: '.next_page',
  • - numpages: 'select.m',
  • + next: 'a.next_page',
  • + numpages: function() {
  • + return extractInfo('select.m') - 1;
  • + },
  • curpage: 'select.m',
  • nextchap: '#chnav p + p a',
  • prevchap: '#chnav a'
  • @@ -408,9 +410,9 @@
  • if (elem) {
  • switch (elem.nodeName.toLowerCase()) {
  • case 'img':
  • - return (mod.altProp && elem.getAttribute(mod.altProp)) || elem.src;
  • + return (mod.altProp && elem.getAttribute(mod.altProp)) || elem.src || elem.getAttribute('src');
  • case 'a':
  • - return elem.href;
  • + return elem.href || elem.getAttribute('href');
  • case 'ul':
  • return elem.children.length;
  • case 'select':
  • @@ -582,15 +584,24 @@
  • };
  • var addImage = function(src, loc, imgNum, callback) {
  • - var image = new Image();
  • + var image = new Image(),
  • + counter = getCounter(imgNum);
  • image.onerror = function() {
  • log('failed to load ' + src);
  • - image.remove();
  • + image.onload = null;
  • + image.style.backgroundColor = 'white';
  • + image.title = 'Reload?';
  • + image.src = '//rgeorgeeb-tilebuttongenerator.googlecode.com/hg-history/c35993682c2d50149976fd7a1f302f8c01a88716/asset-studio/src/res/clipart/icons/refresh.svg';
  • + image.onclick = function() {
  • + image.remove();
  • + counter.remove();
  • + addImage(src, loc, imgNum, callback);
  • + };
  • +
  • };
  • image.onload = callback;
  • image.src = src;
  • loc.appendChild(image);
  • - loc.appendChild(getCounter(imgNum));
  • + loc.appendChild(counter);
  • };
  • var loadManga = function(imp) {
  • @@ -647,7 +658,7 @@
  • return;
  • }
  • if (lastUrl === url) {
  • - log('last url is the same as current, assuming end of chapter');
  • + log('last url (' + lastUrl + ') is the same as current (' + url + '), assuming end of chapter');
  • return;
  • }
  • curPage += 1;