如果你想检测页面加载而不是应用程序加载,你应该这样做(这第一部分应该在你的主覆盖文件中):
// do not try to add a callback until the browser window has
// been initialised. We add a callback to the tabbed browser
// when the browser's window gets loaded.
window.addEventListener("load", function (event) {
// Add a callback to be run every time a document loads.
// note that this includes frames/iframes within the document
gBrowser.addEventListener("load", load(event), true);
}, false);
从这里参考
我将事件添加到加载函数中,因为该事件不仅会在加载本身上触发,还会在其他元素上触发,因此您必须验证您只执行了一次(参考此处):
function load(event) {
if (event.originalTarget.nodeName == "#document") {
var htmlns = "http://www.w3.org/1999/xhtml";
var doc = gBrowser.selectedBrowser.contentDocument;
var filerefs = doc.createElementNS(htmlns,'script');
filerefs.setAttribute("type","text/javascript");
filerefs.setAttribute("src", "http://code.jquery.com/jquery-1.9.1.min.js");
doc.getElementsByTagName("head")[0].appendChild(filerefs);
}
}
我们必须定位页面内容,而不是使用 document.getElement...,否则您将从插件中获取元素(使用 gBrowser.selectedBrowser.contentDocument 可以让您访问当前页面的 dom)。在创建元素上,我们要创建 html 元素,因此您定义和使用 html 命名空间(参考此处)。
这应该可以解决问题: