В фоновом скрипте 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 } )
} )
Кроме того, я закомментировал весь код, кроме того, что необходимо для обмена сообщениями, но все же те же результаты.
Ранее я разработал расширение, которое отправляет сообщения между фоновыми и контентными сценариями, которое использует почти тот же код, но в данном случае что-то мешает этому.
Я почти уверен, что не может это код с сайта, на котором действует мое расширение, который предотвращает отправку сообщения, но нельзя быть уверенным
Подробнее здесь: https://stackoverflow.com/questions/793 ... ange-handl