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

标签 javascript firefox-addon firefox-addon-sdk

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

使用 observer-service我正在监视“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);

大部分摘自 documentation for how to identify the browser that generated the request .一些也取自Google PageSpeed Firefox 插件。

nsIDOMWindow 是否有推荐或首选的方式?对象 domWinSDK tabs 中的选项卡元素模块?

我曾考虑过一些骇人听闻的事情,比如扫描选项卡列表,寻找一个 URL 与 domWin 的 URL 相匹配的选项卡,但我不得不担心多个选项卡具有相同的 URL。

最佳答案

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

var tabsLib = require("sdk/tabs/tab.js");
return tabsLib.getTabForWindow(domWin.top);

关于javascript - 识别在 Firefox Addon SDK 中发出请求的选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8098580/

相关文章:

javascript - 在 firefox 附加面板中显示远程图像

javascript - 如何在 Firefox 附加组件中获取右键单击选项卡的 URL

Firefox 插件 sdk 卸载钩子(Hook)

javascript - Jquery 悬停在 div 上,在祖 parent 上添加样式

javascript - 如何从此 XRayWrapper 获取内容?

javascript - 在 SVG 中选择坐标处的元素

javascript - 如何动态安全地设置 XUL key ?

Firefox 附加组件 SDK : how to make Panel transparent

javascript - 如何根据单击的项目获取模态框中的值

javascript - 我如何正确地进行插入?