Javascript Firefox插件-如何发出http请求

Javascript Firefox插件-如何发出http请求,javascript,firefox,firefox-addon,firefox-addon-sdk,Javascript,Firefox,Firefox Addon,Firefox Addon Sdk,我正在尝试开发我的第一个Firefox插件,它应该在单击toolabar按钮后在当前选项卡中打开指定的url。 它还应该能够在发出此请求之前修改标题、cookie、推荐人等 我找到了这个关于modyfing请求头的教程,但它似乎不适合我 我的插件main.js如下所示: var {ToggleButton}= require("sdk/ui/button/toggle"); var { Cc, Cu, Ci, components } = require('chrome'); var chan

我正在尝试开发我的第一个Firefox插件,它应该在单击toolabar按钮后在当前选项卡中打开指定的url。 它还应该能够在发出此请求之前修改标题、cookie、推荐人等

我找到了这个关于modyfing请求头的教程,但它似乎不适合我

我的插件main.js如下所示:

var {ToggleButton}= require("sdk/ui/button/toggle");
var { Cc, Cu, Ci, components } = require('chrome');

var channel;

function StreamListener(function(data){console.log(data);}) {
   this.mCallbackFunc = aCallbackFunc;
}

StreamListener.prototype = {
    //code pasted from 'HTTP notifications' from previously mentioned link
};

// get an listener
var listener = new StreamListener(function(data){console.log(data)});

var button = ToggleButton({
    id: "refresh-page",
    label: "Refresh Page",
    icon: {
        "16": "./icon-16.png",
        "32": "./icon-32.png",
        "64": "./icon-64.png"
    },
    onChange: function (state) {
        if (state.checked === true) {
            // the IO service
            var ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);

            // create an nsIURI
            var uri = ioService.newURI('http://google.com', null, null);

            var channel = ioService.newChannelFromURI(uri);

            channel.notificationCallbacks = listener;
            channel.open(listener, null);

        }
  }
 });
点击firefox工具栏上的按钮后,什么也没发生。控制台中不会抛出任何错误。 我想我遗漏了一些东西,但不确定是什么。我已经尝试将创建的通道添加到XMLHttpRequest(),但对于服务器外部的url,它不起作用。 有什么建议吗

哪个应该在当前选项卡中打开指定的url

XHR只执行请求并将接收到的内容返回到javascript回调,不会将任何内容加载到网页中

相反,您应该只设置选项卡的url并修改http连接的请求头,当加载选项卡时,firefox将通过使用一个url截获它,从而自动发出http连接。
SDK的模块提供了对observer事件的方便访问。

非常感谢,我将尝试一下!