Firefox Add-on - 如何发出 http 请求
Firefox Add-on - How to make http request
我正在尝试开发我的第一个 Firefox add-on,它应该在单击工具栏按钮后在当前选项卡中打开指定的 url。
它还应该能够在发出此请求之前修改 headers、cookie、引荐来源网址等。
我找到了这个教程 https://developer.mozilla.org/en-US/docs/Creating_Sandboxed_HTTP_Connections,关于 modyfing 请求 headers,但它似乎对我不起作用。
我的插件 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。
有什么建议吗?
which should open specified url in current tab
XHR 仅执行请求,return 将收到的内容发送到 javascript 回调,它们不会将任何内容加载到网页中。
相反,您应该只设置选项卡的 url 并修改 firefox 在加载选项卡时自动发出的 http 连接请求 headers,方法是使用 [=11= 拦截它].
SDK 的 system/event 模块提供了对观察者事件的便捷访问。
我正在尝试开发我的第一个 Firefox add-on,它应该在单击工具栏按钮后在当前选项卡中打开指定的 url。 它还应该能够在发出此请求之前修改 headers、cookie、引荐来源网址等。
我找到了这个教程 https://developer.mozilla.org/en-US/docs/Creating_Sandboxed_HTTP_Connections,关于 modyfing 请求 headers,但它似乎对我不起作用。
我的插件 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。 有什么建议吗?
which should open specified url in current tab
XHR 仅执行请求,return 将收到的内容发送到 javascript 回调,它们不会将任何内容加载到网页中。
相反,您应该只设置选项卡的 url 并修改 firefox 在加载选项卡时自动发出的 http 连接请求 headers,方法是使用 [=11= 拦截它]. SDK 的 system/event 模块提供了对观察者事件的便捷访问。