我正在使用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);
});
当我运行该程序时,我得到了#34;倾听"从外部脚本打印出来,我得到了问候1"从内容脚本打印出来。但是,在外部脚本中,听众似乎并没有工作。我可以在它上面断点并逐步完成该过程,但它最终会跳过侦听器内的块,并在函数结束时无效。任何人都可以看到我可能做错了什么?
答案 0 :(得分:0)
我猜你是在混淆一点点。试试这段代码
chrome.runtime.sendMessage("SomeMessage"); //Content script
现在在你的background.js中收听这条消息。
chrome.runtime.onMessage.addListener(function(response, sender, sendResponse){ alert (response)});
它应该提醒您的消息。在这种情况下" SomeMessage"。