使用Userscript加载外部脚本可与FX 4一起使用,但在FX 3.6中失败
-
28-09-2019 - |
题
这是代码,没有删节(很短):
// ==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)和Nightly(Linux)中完美工作,但使用FX 3.6.X(3.6、3.6.2和3.6.12的报告)失败。
我看不到为什么。
哦,等等...我在fx 4上使用scriptish ...也许这与某件事有关吗?
但是除此之外,我完全不知所措。脚本不会加载。甚至看起来像 document.documentElement.innerHTML = '...'
行不起作用...在火上捕获中是否可以擦除文档 <html></html>
, ,但是之后再也没有发生。
有任何想法吗?
解决方案
我通过更改加载的脚本以立即执行来解决此问题:
(function () { /* ... */ })();
然后删除回调。
浏览器没有问题,但是在反应时间内。由于某种原因,Userscript在FX 4中完成了太早完成。
不隶属于 StackOverflow