Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 识别在Firefox插件SDK中发出请求的选项卡_Javascript_Firefox Addon_Firefox Addon Sdk - Fatal编程技术网

Javascript 识别在Firefox插件SDK中发出请求的选项卡

Javascript 识别在Firefox插件SDK中发出请求的选项卡,javascript,firefox-addon,firefox-addon-sdk,Javascript,Firefox Addon,Firefox Addon Sdk,我正在使用构建一些东西来监视和显示浏览器中的HTTP流量。类似于或类似于。我感兴趣的是确定浏览器中的哪个选项卡(如果有)生成了请求 使用I-am监视“http on-inspect-response”事件。我有如下代码来标识生成请求的nsIDomWindow: const observer = require("observer-service"), {Ci} = require("chrome"); function getTabFromChannel(channel) {

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

使用I-am监视“http on-inspect-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);
大部分都是从学校抄来的。有些还取自Firefox插件

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


我曾经考虑过一些黑客行为,比如扫描标签列表,寻找一个URL与domWin的URL匹配的标签,但是我不得不担心多个标签具有相同的URL。

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

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

从插件SDK版本1.13起,更改:

var tabsLib=require(“tabs/tab.js”)


var tabsLib=require(“sdk/tabs/helpers.js”)

自最初询问/回答此问题以来,API已更改。。。 现在(从1.15开始)应为:


如果还有人关心这个问题:

尽管为了支持更新的WebExtensionsAPI,插件SDK被弃用,但我想指出

var a_tab=require(“sdk/tabs/utils”).getTabForContentWindow(窗口)

返回一个不同于通常使用

PageMod中的worker.tab


例如,一个选项卡将不具有“id”属性,但将具有类似于“id”属性的linkedPanel属性。

Awesome效果非常好!我想我需要关注源代码和文档。现在它调用getTabForContentWindow
return require("sdk/tabs/utils").getTabForWindow(domWin.top);