У меня странная ситуация, когда одна страница контента, кажется, сводит на нет связь фонового скрипта со всеми остальными.
Это странно, поскольку я вижу, что вызовы проходят к фоновому скрипту в DevTools, но как толькокогда я открываю копии главной страницы содержимого chrome-extensions: //xxx/index.html, все остальные страницы, ожидающие результата от chrome.runtime.sendMessage, не получают его.
Я не уверен, имеет ли это отношение к предупреждениям:
Примечание. Если несколько страницпрослушивают события onMessage, только первый, кто вызвал sendResponse () для определенного события, успешно отправит ответ.Все остальные ответы на это событие будут игнорироваться.
Если честно, я нахожу этот текст немного двусмысленным в моем случае.Я думаю, что в обработчике это означает, что sendResponse()
может быть вызван только один раз, но это не то, что здесь происходит, так как содержимое sendMessage()
представляет собой отдельную страницу / процесс.
Опять же, оно заявляет "несколько страниц ", значит ли это, что только одна страница за раз может использовать browser.runtime.onMessage.addListener()
?
Я в замешательстве.
Если я закрою одну из страниц основного контента (страницы ссамая сложная сборка) и оставьте открытыми некоторые из гораздо более простых страниц содержимого (при загрузке которых выполняется только один вызов фонового скрипта), все более простые страницы содержимого (без слушателей) будут работать.
Как только я откроюглавная страница контента (со слушателем), более простые страницы больше не работают, и если я открою две страницы основного контента, ни одна из страниц (со слушателями) не будет работать.
Отправка моего сообщенияобернут в вспомогательную библиотеку, которую я использую для сериализации и обработки ошибок из переданных сообщений, и, кроме того, я использую Polyfill Web Extensions, чтобы предоставить мне более хороший API на основе обещаний, но это будетru Работаю со всем, что мне показывали за последние два месяца, и это приложение сложное.
Я использую одноразовый формат отправки сообщения:
browser.runtime.sendMessage(id || null, payload).then( ... )
Далеешаг - посмотреть на долгоживущее соединение.
Я уверен, что это должно быть проблемой, с которой сталкивались другие.
У кого-нибудь было что-нибудь подобное?
Приветствия,Dave