此代码在安装扩展后工作正常, 但是当我重启浏览器时它失败了。 调用启动函数有什么区别:
安装
开始时
代码:
function startup(aData, aReason) {
_webSocket = new Services.appShell.hiddenDOMWindow.WebSocket("ws://localhost:8887/");
...
}
错误: [JavaScript警告:"警告addons.xpi:在screen-capture@smail.com上运行bootstrap方法启动异常:[例外..."组件返回失败代码:0x80004005(NS_ERROR_FAILURE)[nsIAppShellService.hiddenDOMWindow] " nsresult:" 0x80004005(NS_ERROR_FAILURE)" location:" JS frame :: resource://gre/modules/XPIProvider.jsm - > jar:file:///data/data/org.mozilla.firefox/files/mozilla/lmwz0qwc.default/extensions/screen-capture@smail.com.xpi!/bootstrap.js :: SmartScreencap.connect_ws :: line 89& #34;数据:没有]" {file:" resource://gre/modules/XPIProvider.jsm - >罐子:文件:///data/data/org.mozilla.firefox/files/mozilla/lmwz0qwc.default/extensions/screen-capture@smail.com.xpi /bootstrap.js"! line:89}]
答案 0 :(得分:0)
问题是当function startup(aData, aReason)
正在进行协作时,不会创建Services.appShell.hiddenDOMWindow。所以解决方案是将窗口监听器添加到启动功能中
win.addEventListener('UIReady', function() {
...
Services.appShell.hiddenDOMWindow.WebSocket//call function here
...
}, false);
并从回调函数调用隐藏窗口。