所以我正在制作谷歌浏览器扩展程序,我在邮件系统方面遇到了一些问题。
我创建了一个消息传递函数,允许您通过在参数中定义消息来将消息发送到内容脚本或后台脚本,此函数位于弹出脚本中。
我的问题是,当内容脚本发送响应时,弹出脚本会将其视为未定义。
这是我的代码:
弹出脚本:
// The messaging function
function passMessage(message, location){
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
//Send the message to a content script or background?
switch (location){
case "content":
chrome.tabs.sendMessage(tabs[0].id, {popupMessage: message}, function(response) {
return response;
});
break;
case "background":
chrome.extension.sendMessage(tabs[0].id, {popupMessage: message}, function(response) {
return response;
});
break;
}
});
}
// Call the function like so:
var x = passMessage( "Hello world!" , "content" );
// Undefined (Should be "Hi popup!")
console.log( x );
内容脚本:
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if (request.popupMessage == "Hello world!"){
// Logs "Hello world!"
console.log(request.popupMessage);
// Should send "Hi popup!" back.
sendResponse("Hi popup!");
}
});
所以基本上除响应之外一切都很完美。
有谁知道如何解决这个问题? 谢谢!