подтвердить в onDisconnect - PullRequest
       22

подтвердить в onDisconnect

0 голосов
/ 20 апреля 2020

Я разрабатываю расширение для всплывающих окон, в котором я хочу выполнить действие после подтверждения пользователя при выходе из моего всплывающего окна. Я попытался следующий код в моем фоновом скрипте


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. Очевидно, у меня не может быть диалога в моем фоновом скрипте. Есть ли надежный способ сделать это?

1 Ответ

1 голос
/ 20 апреля 2020

Фоновая страница аддона не может отображать диалог подтверждения напрямую, это ограничение WebExtensions. Есть несколько обходных путей:

  • Запустите скрипт содержимого, включающий confirm() на активной вкладке.
  • Откройте диалоговое окно с browser.windows.create({ url: 'dialog.html', type: 'popup' }); и свяжитесь с фоновой страницей с помощью API-интерфейсов WebExtensions как runtime.connect() или runtime.sendMessage().
...