2010-11-28 7 views
0

Voici le code, pas abrégé (il est shortish):Chargement des scripts externes avec UserScript travaille avec Fx 4, mais échoue dans Fx 3.6

// ==UserScript== 
// @name   Manga ChapterReader 
// @license  MIT/X11 + Attribution (passcod) 
// @namespace  http://www.mangareader.net 
// @include  http://www.mangareader.net/* 
// @description Displays full chapters from MangaReader.net in a simpler interface. 
// @author   passcod 
// @version  10.331 
// ==/UserScript== 

// version format: y.z 
function START(array_of_scripts_to_load, callback) { 
    document.documentElement.innerHTML = '<head></head><body></body>'; 
    for (i in array_of_scripts_to_load) { 
     var script = document.createElement('script'); 
     script.src = array_of_scripts_to_load[i]; 
     var evl = new Object(); 
     evl.handleEvent = function (e) { 
      callback(); 
     }; 
     script.addEventListener('load', evl, true); 
     document.getElementsByTagName('head')[0].appendChild(script); 
    } 
} 

var regular = /mangareader\.net\/[a-z0-9\-]+\/[0-9]+(\/.+)?/i, old = /mangareader\.net\/[0-9\-]+\/([a-z0-9\-]+)\/chapter-([0-9]+)\.htm/i; 

if (regular.test(window.location)) { 
    //START(['http://lib/libstore/jquery.js','http://scrap.book/userscripts/mangareader/index.js'], 
    START(['http://code.jquery.com/jquery-1.4.2.min.js','https://bitbucket.org/passcod/scrap.book/raw/tip/userscripts/mangareader/index.js'], 
    function() { 
     $$$(); 
    }); 
} 
else if (old.test(window.location)) { 
    var parts = old.exec(window.location); 
    window.location = 'http://www.mangareader.net/'+parts[1]+'/'+parts[2]; 
} 

Cela fonctionne parfaitement dans Firefox 4.0b7 (Windows) et la nuit (Linux), mais il échoue avec Fx 3.6.x (Rapports de 3.6, 3.6.2 et 3.6.12).

Je ne vois pas pourquoi. Oh, attendez ... J'utilise Scriptish sur Fx 4 ... peut-être que cela a quelque chose à voir?

Mais à part ça, je suis totalement à la perte. Les scripts ne sont pas chargés. Il semble même que la ligne document.documentElement.innerHTML = '...' ne fonctionne pas ... l'a fait dans Firebug et il efface le document à <html></html>, mais il ne se passe plus rien par la suite.

Des idées?

Répondre

0

je fixe en changeant les scripts chargés d'exécuter immédiatement:

(function() { /* ... */ })(); 

puis enlever les callbacks.

Il n'y avait pas de problème avec le navigateur, mais dans le temps de réaction. Pour une raison quelconque, l'utilisateur a fini trop tôt dans Fx 4.

Questions connexes