Я работаю над расширением Chrome, где мне нужно получить значение из одной части расширения в другую. У меня есть фоновый скрипт, который выполняет оба сценария при нажатии на значок расширения. Один скрипт контента получает значение с веб-страницы и должен отправлять его во внешний скрипт. При нажатии на значок расширения он выполняет внешний скрипт, который прослушивает сообщение.Передача сообщения из одного сценария содержимого в другой
function message(){
console.log("Listening...");
var token = "";
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){
console.log("Attempting to get message...");
console.log(sender.tab ?
"from a content script:" + sender.tab.url :
"from the extension");
if (typeof request != 'undefined'){
console.log("Printing token...");
token = request.token;
console.log(token);
received = true;
sendResponse({greeting: "Got Token"});
}
});
}
message();
В сценарии содержимого, при нажатии на веб-странице щелкают он должен отправить сообщение на внешний сценарий. Вот код в скрипте содержимого.
chrome.runtime.sendMessage({token: token, URL: URL},function(response) {
console.log("Greeting 1");
console.log(response.greeting);
});
Когда я запускаю программу, я получаю «Listening» распечатанную из внешнего скрипта, и я получаю «Приветствие» 1 распечатанных из скрипта содержимого. Однако во внешнем скрипте слушатель, похоже, не работает. Я могу остановиться на нем и пройти через процесс, но он просто заканчивает пропустить блок внутри слушателя и просто заканчивается в конце функции, ничего не делая. Может ли кто-нибудь увидеть, что я могу делать неправильно?
Где запущена функция 'message'? На странице фона? На всплывающей странице? – apsillers