Расширение Chrome не может отправить сообщение sendMessasge() из обработчика chrome.storage.onChange.Javascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Расширение Chrome не может отправить сообщение sendMessasge() из обработчика chrome.storage.onChange.

Сообщение Anonymous »

Я разрабатываю расширение Chrome V3 со страницей параметров, которая использует chrome.storage для сохранения пользовательских настроек.
В фоновом скрипте js у меня есть прослушиватель, который обрабатывает обновления chrome.storage. запустив sendMessage в скрипт содержимого и ожидая обратного подтверждения. Цель состоит в том, чтобы немедленно запускать сценарии из сценария содержимого, как только пользовательские настройки обновляются, но sendMessage, похоже, не запускается.
Код, который я использую, приведен ниже:

Код: Выделить всё

// background.js

chrome.storage.onChanged.addListener( async ( changes, namespace ) => {
const queryOptions = { active: true, lastFocusedWindow: true }
const [ tab ] = await chrome.tabs.query( queryOptions )
for ( const [ key, { newValue } ] of Object.entries( changes ) ) {
const message = JSON.parse( `{ "${ key }":${ newValue }}` )
chrome.tabs.sendMessage( tab.id, { message }, function ( response ) {
if ( !chrome.runtime.lastError ) {
if ( typeof response !== 'undefined' ) {
console.log( { response } )
}
}
} )
}
} )

// content.js

chrome.runtime.onMessage.addListener( function ( message, sender, sendResponse ) {
console.log( { message } )
const response = 'got it'
sendResponse( { response } )
} )

Поскольку я использую страницу параметров вместо встроенного пользовательского интерфейса параметров, доступен API chrome.tabs, однако я неправильно прочитал документацию и изначально использовал chrome.runtime.sendMessage. Тем не менее, я могу захватить нужную вкладку из фонового сценария, т.е. Я могу получить объект, представляющий активную вкладку, которая содержит ключи идентификатора для вкладки и окна.
Кроме того, я закомментировал весь код, кроме того, что необходимо для обмена сообщениями, но все же те же результаты.
Ранее я разработал расширение, которое отправляет сообщения между фоновыми и контентными сценариями, которое использует почти тот же код, но в данном случае что-то мешает этому.
Я почти уверен, что не может это код с сайта, на котором действует мое расширение, который предотвращает отправку сообщения, но нельзя быть уверенным

Подробнее здесь: https://stackoverflow.com/questions/793 ... ange-handl
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»