Mozilla插件的nsiObserver如何工作?

时间:2015-01-20 11:59:07

标签: firefox-addon

我试图进行扩展以观察自定义URI标记。所以我需要帮助才能知道如何做到这一点?

提前致谢。

1 个答案:

答案 0 :(得分:1)

每个观察者都期望一个包含一个名为observe的函数的对象,它接收3个这样的参数:

var blasfasf = {
observe: function(some_subject, some_topic, some_data) {
// responder
console.log('im responding to:', some_topic, 'and data coming with it is:', 'some_subject:', some_subject, 'some_data:', some_data);
}
}

现在这是响应者。每当观察在some_topic上发射时,如果你用

添加观察者,它将触发该观察者
Services.ob.addObserver

要添加以上内容以说明时间http-on-modify-request,您可以这样:

Services.ob.addObserver('http-on-modify-request', blasfasf, false);

第三个arg是假的,除非你想要弱参考,我从来没有找到它的用途,但它干扰研究可以帮助避免僵尸隔间

现在,只要浏览器触发http-on-modify-request,它就会触发你的观察者

现在你也可以将自己的some_topic添加到你自己的观察者身上。

让我们将其添加到my_stamped

所以我们这样做:

Services.ob.addObserver('my_stamped', blasfasf, false);

然后触发我们的观察者:

var subject_to_send = 'my made up subject';
var data_to_send = 'my made up data';
Services.ob.notifyObserver(subject_to_send, 'my_stamped', data_to_send);

这会触发你的观察者回调。