gpt4 book ai didi

firefox - 如何收听 Fennec 扩展的页面加载?

转载 作者:行者123 更新时间:2023-12-01 01:30:29 25 4
gpt4 key购买 nike

我正在为 Fennec 开发一个简单的扩展,它必须向每个加载的页面添加特殊的 HTML 元素。我创建了这个简单的 overlay.js:

var MyAddon = {
onLoad: function(aEvent){
var appcontent = document.getElementById("appcontent"); // Firefox
if (!appcontent) {
appcontent = document.getElementById("browsers"); // Fennec
}
if (appcontent) {
appcontent.addEventListener("DOMContentLoaded", MyAddon.onDocumentLoad, true);
}
},

onUnLoad: function(aEvent){
var appcontent = document.getElementById("appcontent"); // Firefox
if (!appcontent) {
appcontent = document.getElementById("browsers"); // Fennec
}
if (appcontent) {
appcontent.removeEventListener("DOMContentLoaded", MyAddon.onDocumentLoad, true);
}
},

onUIReady: function(aEvent){
},

onUIReadyDelayed: function(aEvent) {
},

onDocumentLoad: function(aEvent) {
alert("OK");
}
};

window.addEventListener("load", MyAddon.onLoad, false);
window.addEventListener("unload", MyAddon.onUnLoad, false);
window.addEventListener("UIReady", MyAddon.onUIReady, false);
window.addEventListener("UIReadyDelayed", MyAddon.onUIReadyDelayed, false);

问题是警报仅在浏览器启动时显示一次,我希望它显示在每个加载的页面上。我究竟做错了什么?

Fennec 版本:4.0b5(Windows 桌面版测试)

谢谢!

最佳答案

不幸的是,这对 Fennec 来说更为复杂。没有来自内容文档的“DOMContentLoaded”之类的事件。这是因为您的叠加层附加了 Javascript 的主窗口与子窗口(内容窗口)处于不同的进程中
你必须:

  • 使用每个新选项卡加载一个脚本:
    browser.messageManager.loadFrameScript("chrome://my_add_on/content/content.js", true);
  • 在 content.js 中,监听事件 DOMContentLoaded:
    addEventListener("DOMContentLoaded", process, true);
    函数过程(事件){ ... }

  • 有关更多信息,请查看以下页面:
  • https://wiki.mozilla.org/Mobile/Fennec/Extensions/Electrolysis
  • https://hg.mozilla.org/mobile-browser/file/8167d57cab8e/chrome/content/browser.js#l1327
  • 关于firefox - 如何收听 Fennec 扩展的页面加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5180634/

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