Javascript 使用Firefox附加SDK进行跨域ImageData检索

Javascript 使用Firefox附加SDK进行跨域ImageData检索,javascript,firefox,canvas,firefox-addon,firefox-addon-sdk,Javascript,Firefox,Canvas,Firefox Addon,Firefox Addon Sdk,我正在开发一个Firefox插件,它涉及从web上的任意图像读取像素图像数据 对于Chrome、Safari和Opera,这就像在背景页面的画布上加载图像一样简单(getImageData起作用并忽略同源限制)。但是在Firefox上,使用附加SDK在从任意URL加载的图像上创建并调用getImageData会产生安全错误 - message = The operation is insecure. - name = SecurityError - result = 2152923154 我已

我正在开发一个Firefox插件,它涉及从web上的任意图像读取像素图像数据

对于Chrome、Safari和Opera,这就像在背景页面的画布上加载图像一样简单(getImageData起作用并忽略同源限制)。但是在Firefox上,使用附加SDK在从任意URL加载的图像上创建并调用getImageData会产生安全错误

- message = The operation is insecure.
- name = SecurityError
- result = 2152923154
我已经翻阅了加载项SDK的文档和其他StackOverflow答案,似乎内容脚本通常仍然受同一来源策略的约束。PrivilegeManager/enablePrivilege(我甚至不确定这是否相关)似乎已被弃用


目前我唯一能想到的方法是使用requestType为Blob的低级net/xhrapi,并使用createObjectURL加载图像。但这似乎有点不必要的复杂,当我觉得应该有某种方法可以直接调用getImageData,而不会在特权上下文中与同源策略冲突时。

尝试
var blah=new Image
然后执行
blah.onload=function(){canvas.data……}
然后执行
blah.src='..'

您需要的是一个特权的
画布
,我认为没有办法从内容脚本中获得一个,无论是否可信

尽管如此,我们仍然没有选择的余地

var chromewin=require('sdk/windows/utils')。getHiddenWindow();
var canvas=chromewin.document.createElements('http://www.w3.org/1999/xhtml',
“画布”);
var img=新的色度图像;
现在您可以在没有安全限制的情况下工作