如何从当前文档/窗口访问firefox扩展变量

bos*_*101 4 javascript scope firefox-addon

我的firefox扩展有一个对象myExt.

myExt = {
 request: function(){ 
    //adds dynamic script element to the current webpage's head tag
 },
 callback: function(json) { 
    //do something with this 
 } 
};
Run Code Online (Sandbox Code Playgroud)

myExt.request将一个动态添加的脚本元素添加到返回json的服务器,我希望将json发送到我的扩展的js代码中存在的myExt.callback.

从我的扩展

//from my extension, i add a script element
myExt.request();
Run Code Online (Sandbox Code Playgroud)

ping服务器,返回网页

//from server i get the following response
myExt.callback ( {"some":"json"}) ;

//but the window doesnt find a reference to myExt
Run Code Online (Sandbox Code Playgroud)

如何从网页中引用myExt变量?

flp*_*mor 5

Firefox扩展以高权限(chrome)运行JavaScript,并具有对浏览器的完全访问权限.来自网页的JavaScript代码运行非特权JavaScript,并且不能直接引用特权JavaScript或与特权JavaScript交互.

通常,当您的扩展代码与来自网站的代码交互时,您必须非常小心,以免打开可能允许恶意网站使用chrome权限执行JavaScript的安全漏洞.

您可以在此处找到更多信息,包括代码段,如果您需要在特权和非特权JavaScript之间交换数据:

https://developer.mozilla.org/en/Security_best_practices_in_extensions