识别在Firefox Addon SDK中发出请求的选项卡

Rob*_*Rob 5 javascript firefox-addon firefox-addon-sdk

我正在使用Firefox Addon SDK来构建监视和显示浏览器中HTTP流量的内容.与HTTPFoxLive HTTP Headers类似.我有兴趣确定浏览器中的哪个选项卡(如果有)生成了请求

使用观察者服务我正在监视"http-on-examine-response"事件.我有以下代码来识别生成请求的nsIDomWindow:


const observer = require("observer-service"),
    {Ci} = require("chrome");

function getTabFromChannel(channel) {
    try {
        var noteCB= channel.notificationCallbacks ? channel.notificationCallbacks : channel.loadGroup.notificationCallbacks;

        if (!noteCB) { return null; }

        var domWin = noteCB.getInterface(Ci.nsIDOMWindow);
        return domWin.top;
    } catch (e) {
        dump(e + "\n");
        return null;
    }
}

function logHTTPTraffic(sub, data) {
    sub.QueryInterface(Ci.nsIHttpChannel);
    var ab = getTabFromChannel(sub);
    console.log(tab);
}

observer.add("http-on-examine-response", logHTTPTraffic);
Run Code Online (Sandbox Code Playgroud)

主要是从文档中了解如何识别生成请求的浏览器.有些也来自Google PageSpeed Firefox插件.

是否有推荐或首选的方法从nsIDOMWindow对象domWin转到SDK选项卡模块中的选项卡元素?

我已经考虑过像浏览选项卡列表那样使用与domWin的URL匹配的URL的一些hacky,但是我不得不担心多个选项卡具有相同的URL.

Wla*_*ant 3

您必须继续使用内部软件包。据我所知,包getTabForWindow()中的函数api-utils/lib/tabs/tab.js正是您想要的。未经测试的代码:

var tabsLib = require("sdk/tabs/tab.js");
return tabsLib.getTabForWindow(domWin.top);
Run Code Online (Sandbox Code Playgroud)