2010-11-28 11 views
0

Hier ist der Code, nicht gekürzt (es ist shortish):Laden von externen Scripts mit Userscript arbeitet mit Fx 4, aber nicht in 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]; 
} 

Die perfekt in Firefox 4.0b7 (Windows) arbeitet und jede Nacht (Linux), aber es schlägt mit Fx 3.6.x fehl (Berichte von 3.6, 3.6.2 und 3.6.12).

Ich kann nicht sehen, warum.

Oh, warte ... Ich benutze Scripthish auf Fx 4 ... vielleicht hat das etwas zu tun?

Aber abgesehen davon bin ich total verloren. Die Skripte werden nicht geladen. Es sieht sogar so aus, als ob die document.documentElement.innerHTML = '...' Zeile nicht funktioniert ... hat es in Firebug und es löscht das Dokument auf <html></html>, aber danach passiert nichts mehr.

Irgendwelche Ideen?

Antwort

0

Ich reparierte diese durch die geladenen Scripts zu ändern sofort auszuführen:

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

und dann die Rückrufe zu entfernen.

Es gab kein Problem mit dem Browser, aber in der Reaktionszeit. Aus irgendeinem Grund wurde das Benutzer-Skript in Fx 4 zu früh beendet.