我试图使用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()函数永远不会运行,为什么?
答案 0 :(得分:0)
好的,我找到了答案,我真的不知道为什么会这样,但好吧,来吧:
观察员'函数如何在我的代码中调用它需要被调用'观察'。
真的很烦人。