gpt4 book ai didi

javascript - 页面加载后加载脚本 - Firefox 扩展

转载 作者:行者123 更新时间:2023-11-29 22:11:02 25 4
gpt4 key购买 nike

我正在创建一个 Firefox 扩展。我想在加载时使用 Firefox 扩展为所有网页加载我的外部 js 文件。我可以在我的 html 文件中的加载事件中成功加载所有 js 文件。但是我怎样才能执行到我的扩展。

window.onload = load;
function load()
{
var filerefs=document.createElement('script')
filerefs.setAttribute("type","text/javascript")
filerefs.setAttribute("src", 'http://code.jquery.com/jquery-1.9.1.min.js')
var head = doc.getElementsByTagName( "head" )[ 0 ].appendChild( filerefs );
}

请指导我。

最佳答案

如果你想检测页面加载而不是应用程序加载,你应该这样做(第一部分应该在你的主覆盖文件中):

// 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);

引用自here

我将事件添加到加载函数中,因为该事件不仅会在加载本身上触发,还会在其他元素上触发,因此您必须验证您只执行了一次(引用 here):

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)。在 createlement 上,我们要创建 html 元素,因此您定义并使用 html 命名空间(引用 here )。

这应该可以解决问题:

enter image description here

关于javascript - 页面加载后加载脚本 - Firefox 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18019223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com