Я экспериментировал с расширением хром. Моя цель - отправить сообщение из фонового сценария на инъецированный скрипт и вернуть вложенный сценарий обратно результат.Расширение Chrome: ошибка при отправке сообщения обратно из вложенного скрипта в фоновый скрипт
код, как показано ниже:
background.js
chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab){
chrome.tabs.executeScript(tabId, {'file': "content.js"},
function(){
chrome.tabs.sendMessage(tabId, {msg: 'test'},
function(response){
console.log(response);
}
);
return true;
}
);
});
content.js
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
sendResponse('test message');
return true;
}
);
Я получаю сообщение об ошибке
Could not send response: The chrome.runtime.onMessage listener must return true if you want to send a response after the listener returns
при вызове sendResponse
инов ide content.js
Я уже возвращаю истину от слушателя. confused?
Я пропустил что-то очевидное?
что не кажется, проблема. Я могу удалить эту строку без какого-либо эффекта. Ошибка в content.js. –
Вы пытались удалить 'return true' в своем слушателе' onMessage'? – BeardFist
Не знаете, почему вы получаете эту ошибку, но это может иметь какое-то отношение к тому факту, что вы генерируете слушателей «на лету» с помощью OnUpdate. Возможно, вы захотите попробовать другой подход: добавьте скрипт содержимого в файл манифеста для загрузки всех URL-адресов при запуске документа. Затем сценарий содержимого отправит сообщение на исходную страницу при загрузке. Тогда сценарий фона и содержимого может нормально взаимодействовать. –