Firefox插件:如何在页面加载*启动时触发事件*?

时间:2010-09-01 11:18:14

标签: javascript firefox firefox-addon

我写了一个侧边栏插件:

  • 获取当前页面的URL
  • 使用网址
  • 拨打个人服务器
  • 并在侧栏中显示上下文信息

目前,在以下事件中调用此函数:

  • 启用插件
  • 关于窗口加载
  • on appcontent load
  • on TabSelect

但是,有时网页耗时太长,无法触发“加载”事件。因此,我更喜欢的是在发送当前页面的第一个请求后立即调用我的插件功能

我被告知Progress Listener和Observer可能会有所帮助。我尝试了快速而又脏的Progress-Listener代码,但它没有按预期工作(也许是我的错)。

请求建议/链接/代码示例。提前谢谢。

2 个答案:

答案 0 :(得分:1)

正如之前所预期的那样,观察者正是所需要的。我需要做的就是听取“http-on-modify-request”主题并调用自定义方法(基于所需的任何自定义检查)。

示例代码:

var MyAwesomeObserver = {
observe: function(subject, topic, data)
{
    if (topic == "http-on-modify-request") {
        MyLogger.info('Yosssssssss! '+topic); //customer Logger that uses nsIConsoleService
        MyAwesomeObject.notSoAwesomeFunction(); //invoke the custom method here
    }
},

get observerService() {
    return Components.classes["@mozilla.org/observer-service;1"]
    .getService(Components.interfaces.nsIObserverService);
},

register: function(){
    this.observerService.addObserver(this, "http-on-modify-request", false);
},

}
   MyAwesomeObserver.register();

答案 1 :(得分:0)

首先想到的是'DOMContentLoaded'事件。这应该比我想的“加载”更快,但试试看看。