我正在为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桌面版测试)
谢谢!
发布于 2011-04-15 12:10:38
不幸的是,这对于Fennec来说更加复杂。没有来自内容文档的"DOMContentLoaded“这样的事件。这是因为覆盖附加Javascript的主窗口与子窗口(内容窗口)处于不同的进程中
您必须:
browser.messageManager.loadFrameScript("chrome://my_add_on/content/content.js",true);
addEventListener("DOMContentLoaded",process,true);函数process(event) { ... }
有关更多信息,请查看以下页面:
https://stackoverflow.com/questions/5180634
复制相似问题