在 onDisconnect 中确认

confirm in onDisconnect

我正在开发一个弹出窗口扩展,当我的弹出窗口退出时,我想在用户确认后执行一个操作。我在后台脚本中尝试了以下代码


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。显然,我的后台脚本中不能有对话。有可靠的方法吗?

插件的后台页面无法直接显示确认对话框,这是WebExtensions的限制。有一些解决方法:

  • 运行 活动标签中包含 confirm() 的内容脚本。
  • 使用 browser.windows.create({ url: 'dialog.html', type: 'popup' }); 打开对话框 window 并使用 runtime.connect()runtime.sendMessage().
  • 等 WebExtensions API 与后台页面通信