我正在尝试在Firefox扩展中动态创建全局函数:

window.performAction= function() { ... };


我现在知道该窗口是由XrayWrapper问题包装的。

window -> [object XrayWrapper [object Window]]


因此,似乎分配函数绝对没有任何作用。有没有办法像这样安全地修改窗口对象?

最佳答案

从您的附加代码:

gBrowser.contentWindow.addEventListener('customEventListenerMy',doMyFunc,false);
function doMyFunc(){
console.log('doing func');
}


gBrowser.contentWindow附加到当前聚焦的选项卡文档。可能需要在gBrowser之前粘贴Services.wm.getMostRecentWindow('navigator:browser'),这样Services.wm.getMostRecentWindow('navigator:browser').gBrowser.contentWindow

在您的窗口dispatchEvent中

var event = new Event('customEventListenerMy');
// Dispatch the event.
window.dispatchEvent(event);

09-19 00:26