Firefox加载项会在每个打开的窗口中触发代码

时间:2015-08-30 09:21:31

标签: firefox firefox-addon firefox-addon-sdk

我有一个Firefox添加,当它看到某个响应标题时显示弹出窗口。当我有一个窗口时,这工作正常。但是,当我打开多个窗口时,窗口中的一个选项卡会触发我的附加组件中的弹出代码(由于存在所述标题),我会在每个打开的窗口中弹出一个窗口。例如,如果我打开3个窗口,我会得到3个不同的弹出窗口,每个窗口一个。这是默认行为,是否有一种简单的内置方法可以使用他们的SDK修复此问题。

编辑: 我有以下代码:

Util.requestBlock(httpChannel) {
    /*load response headers here*/
    if (responseHeaders.includes("header_xyz"))
        alert("show popup");
}

Util.monitor = function(w) {
    this.obsService = Components.classes['@mozilla.org/observer-service;1'].getService(Components.interfaces.nsIObserverService);
    this.obsService.addObserver(this, 'http-on-examine-response', false);
}

Util.monitor.prototype = {
    'observe': function(subject, topic, data). {
        if (topic == 'http-on-examine-response'). {
            var channel = subject.QueryInterface(Components.interfaces.nsIHttpChannel);
            var block_response = new Util.RequestBlock(channel);
        }
    },
};

Util.monitor添加了一个观察者。只要收到响应,就会调用“观察”功能。

1 个答案:

答案 0 :(得分:0)

var windows = require("window-utils");
for (window in windows.browserWindowIterator)
  doToWindow(window);