Не удается вызвать browser.runtime.openOptionsPage() в FireFox

Я создал браузерное расширение на VUE с помощью плагина vue-cli-plugin-chrome-extension-cli и оно отлично работает в chrome.

Понадобилось сделать чтобы это расширение так же работало в браузере Firefox

Чтобы оно загрузилось в браузер мне понадобилось изменить в manifest "background"

для chrome было так:

"background": {
    "service_worker": "/background.js"
}

А для Firefox нужно так:

"background": {
    "scripts": ["/background.js"]
}

Теперь это расширение загрузилось в браузер и успешно открывается popup.html

В этом popup.html у меня есть ссылка

<a href="javascript:;" @click.prevent="openOptionPage();">Настройки</a>

Которая вызывает метод openOptionPage() который имеет такой код:

    openOptionPage: function (openModal = false) {
        browser.runtime.openOptionsPage();
        // chrome.runtime.openOptionsPage();
    }

когда вызывается этот метод, в консоле вижу ошибки:

[Vue warn]: Error in v-on handler: "InvalidStateError: An exception was thrown"

found in

---> at src/view/popup.vue

DOMException: An exception was thrown

reactiveGetter VueJS
openOptionPage popup.vue:205
click popup.vue:211
VueJS 35
<anonymous> popup.js:8
<anonymous> popup.js:14876
<anonymous> popup.js:14877

пробовал разными способами - безуспешно!

Буду очень благодарен за помощь!


Ответы (2 шт):

Автор решения: Talleyran

Манифест расширения для firefox так же отличается в части декларации страницы для настроек.

Вместо

"options_page": "options.html",

Надо писать

"options_ui": {
   "page": "options.html"
},

О правильности подхода свидетельствует то, что на странице about:addons появляется вкладка "Настройки" у вашего расширения. У меня в такой конфигурации только что заработало и клик по ссылке в том числе.

→ Ссылка
Автор решения: iKey

Точно не могу назвать причину, но все решилось тем что я установил версию манифеста 2 вместо 3.

→ Ссылка