我正在开发一个弹出窗口扩展程序,我希望在弹出窗口退出用户确认后执行操作。我在后台脚本中尝试了以下代码
browser.runtime.onConnect.addListener(function (externalPort) {
if (externalPort.name === 'myport') {
externalPort.onDisconnect.addListener(function () {
if (confirm("are you sure?"){
doIt();
}
});
}});
但是我得到一个错误:TypeError: window.gBrowser is undefined
。显然,我的后台脚本中没有对话框。有可靠的方法吗?
Addon的背景页面无法直接显示确认对话框,这是WebExtensions的限制。有一些解决方法:
confirm()
的内容脚本。browser.windows.create({ url: 'dialog.html', type: 'popup' });
打开对话框,并使用runtime.connect()
或runtime.sendMessage()
之类的WebExtensions API与后台页面进行通信。