首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何监听来自Fennec扩展的页面加载?

如何监听来自Fennec扩展的页面加载?
EN

Stack Overflow用户
提问于 2011-03-03 20:20:16
回答 1查看 1.2K关注 0票数 4

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

代码语言:javascript
复制
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桌面版测试)

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-15 12:10:38

不幸的是,这对于Fennec来说更加复杂。没有来自内容文档的"DOMContentLoaded“这样的事件。这是因为覆盖附加Javascript的主窗口与子窗口(内容窗口)处于不同的进程中

您必须:

  1. 使用每个新选项卡加载一个脚本:

browser.messageManager.loadFrameScript("chrome://my_add_on/content/content.js",true);

  1. 在content.js中,监听事件DOMContentLoaded:

addEventListener("DOMContentLoaded",process,true);函数process(event) { ... }

有关更多信息,请查看以下页面:

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5180634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档