【发布时间】:2013-08-12 09:17:59
【问题描述】:
我正在将 chrome 扩展程序移植到 firefox,并希望保留尽可能多的代码。我正在使用 sdk,而且我是 JavaScript 新手,所以如果这只是一个小错误,请多多包涵;)
我需要通过内容脚本中的几个 XMLHttpRequest 获取一些东西。
做事的“firefox 方式”是使用 sdk-request-api 并通过主脚本和内容脚本之间的消息(如 so)工作。除了在整个插件中实现这一点对我来说意味着很多工作之外,我还需要获取二进制数据,这似乎是不可能的。
解决方法已记录在 here。我宁愿避免这种情况,因为我想我在某处读到它现在是一个测试版功能,而且它似乎很“变通”。
理想情况下,我想以this 的方式实现它。在即将到来的 Firefox 24 中,应该可以允许内容脚本访问某些域。因此,我现在正在使用 Firefox Aurora。我将以下代码添加到我的 package.json:
"permissions": {
"cross-domain-content": ["http://mozilla.org"]
}
我的 main.js 在单击按钮时创建一个面板并将脚本加载到其中:
var testPanel = require("sdk/panel").Panel({
contentURL: data.url("pages/background.html"),
contentScriptFile: [data.url("util/jquery-1.8.2.min.js"), data.url("pages/xhrTest.js")]
})
testPanel.show();
这是我的 xhrTest.js:
var xhr = new XMLHttpRequest();
xhr.open("GET","http://mozilla.org",true);
xhr.onerror = function () {
console.log("Error");
};
xhr.onload = function () {
console.log("loaded");
}
xhr.send();
在调试时,它从状态 2 跳转到状态 4,响应为空,并调用“onerror”。状态为 0,statustext 为空,我没有看到任何其他指示出了什么问题。 现在我不知道这是否仍然是同源策略阻止我,还是我做错了什么?
如果能得到任何帮助,我将不胜感激:)
提前致谢,
法比
【问题讨论】:
标签: xmlhttprequest cross-domain firefox-addon-sdk content-script