У меня есть аддон с веб-расширением, который состоит из моих фоновых скриптов, скриптов контента и страницы options_ui.Сценарии содержимого сообщают фоновому сценарию, используя browser.runtime.sendMessage
, и ожидают ответ от него с информацией, которая ему нужна, довольно часто.Фоновый сценарий слушает с browser.runtime.onMessage.addListener
.
. На странице параметров выполняется действие, которое может занять от 1 до 5 минут, поэтому он сообщает фоновому сценарию об этом, а фоновый сценарий отвечает обновлением каждые1% до browser.tabs.sendMessage
.Пейджер параметров регистрирует прослушиватель browser.runtime.onMessage
для прослушивания этого обновления.
Проблема заключается в том, что, пока страница параметров открыта, сценарии содержимого не могут получать ответы от фонового сценария.Любой ответ, который он получает, всегда нулевой.Фоновый сценарий определенно получает запрос от сценария содержимого и ответ с правильной информацией, но сценарий не получает ответ.Даже если у меня открыто несколько скриптов контента, и если я регистрирую слушателя browser.runtime.onMessage
на каждом из них, как я делаю для страницы параметров, он работает , пока страница параметров закрыта .
Я не совсем уверен, что здесь происходит или каковы следующие шаги.Я знаю, что в документации для runtime.onMessage
говорится, что только один слушатель может ответить, если два зарегистрированы в одном и том же документе, но если страница параметров не считается тем же документом, что и фоновый скрипт, это на самом деле не имеет смысла.Я знаю, что это проблема не только Firefox, так же как и в Chrome.