Firefox Addon(Observer)http-on-modify-request不会被触发

时间:2015-11-01 21:34:42

标签: javascript http firefox header mozilla

我试图使用jpm和文本编辑器编写一个非常简单的Addon,但是我遇到了这个问题:

我得到了这段代码来观察HTTP请求标头:

var {Cc, Ci} = require("chrome");

console.log("inside test");

var httpRequestObserver = {
  observer: function(subject, topic, data){

    console.log("inside observer definition");
    if(topic == "http-on-modify-request") {
      var httpChannel = subject.QueryInterface(Ci.nsIHttpChannel);

      console.log("done what i should do");
    }
  },

  get observerService(){
    console.log("registered");
    return Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
  },

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

  unregister: function(){
    console.log("unregistering");
    this.observerService.removeObserver(httpRequestObserver, "http-on-modify-request");
  }
};

exports.httpRequestObserver = httpRequestObserver;

并从另一个.js文件中运行它:

require("./theothercode.js").httpRequestObserver.register();

但是,我在控制台中的输出如下所示:

console.log: myplugin: inside test
console.log: myplugin: inside main
console.log: myplugin: registering
console.log: myplugin: registered

然后它就会停止做任何事情,即使我随机浏览网页(什么应该产生一些相当数量的标题,因此应该触发我的'观察者'功能)。

我错过了什么吗?我仍然是Java脚本的新手,并不是真的喜欢它.. 我已经阅读了一些Mozilla指南以及其他有关此问题的帖子,但它们似乎与我没有相同的问题。

总结:我的observer()函数永远不会运行,为什么?

1 个答案:

答案 0 :(得分:0)

好的,我找到了答案,我真的不知道为什么会这样,但好吧,来吧:

观察员'函数如何在我的代码中调用它需要被调用'观察'。

真的很烦人。