Не удается вызвать 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 шт):
Манифест расширения для firefox так же отличается в части декларации страницы для настроек.
Вместо
"options_page": "options.html",
Надо писать
"options_ui": {
"page": "options.html"
},
О правильности подхода свидетельствует то, что на странице about:addons появляется вкладка "Настройки" у вашего расширения. У меня в такой конфигурации только что заработало и клик по ссылке в том числе.
Точно не могу назвать причину, но все решилось тем что я установил версию манифеста 2 вместо 3.