Загрузка внешних скриптов с помощью Userscript работает с Fx 4, но не работает в Fx 3.6 - PullRequest
0 голосов
/ 28 ноября 2010

Вот код, не сокращенный (это кратко):

// ==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];
}

Это прекрасно работает в Firefox 4.0b7 (Windows) и ночью (Linux), но не работает с Fx 3.6.x (отчеты от3.6, 3.6.2 и 3.6.12).

Я не понимаю, почему.

Ой, подождите ... Я использую Scriptish на Fx 4 ... возможно, это должноделать с чем-то?

Но кроме этого, я в полном недоумении.Скрипты не загружаются.Выглядит даже, как будто строка document.documentElement.innerHTML = '...' не работает ... это было сделано в Firebug и стирает документ до <html></html>, но после этого больше ничего не происходит.

Есть идеи?

1 Ответ

0 голосов
/ 17 декабря 2010

Я исправил это, изменив загруженные скрипты для немедленного выполнения:

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

и затем удаление обратных вызовов.

Не было проблем с браузером, но во время реакции. По какой-то причине пользовательский скрипт закончил слишком рано в Fx 4.

...