Firefox添加

我正在尝试开发我的第一个Firefox插件,它应该在点击toolabar按钮后在当前选项卡中打开指定的URL。 在提出此请求之前,它也应该能够修改标题,cookie,引用者等。

我发现这个教程https://developer.mozilla.org/en-US/docs/Creating_Sandboxed_HTTP_Connections,关于请求头文件,但它似乎不适用于我。

我的插件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(https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest),但它不适用于服务器外部的url。 有什么建议么?


它应该在当前标签中打开指定的网址

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

相反,您应该设置标签的url并修改http连接的请求标头,当通过http观察者拦截它时加载该标签时,它将自动由firefox发布。 SDK的系统/事件模块可以方便地访问观察者事件。

链接地址: http://www.djcxy.com/p/79791.html

上一篇: Firefox Add

下一篇: How to test privileged packaged apps on Firefox for Desktop?