我对sendResponse
(如chrome.runtime.onMessage.addListener
)和chrome.tabs.sendMessage
的使用感到有点困惑。
我想要做的是我想从内容脚本向后台发送消息,后台将回复一些适当的消息。我的代码如下。
在内容脚本中:
var currentHost = window.location.host;
chrome.runtime.sendMessage({ type: 'getUsageTime', host: currentHost }, function (res) {
console.log(res);
});
在后台:
function onMessage (message, sender, sendResponse) {
if (message.type === 'getUsageTime') {
console.log('Getting the usage time for ' + message.host);
sendResponse({ usageTime: usageTime });
return true;
}
}
chrome.runtime.onMessage.addListener(onMessage);
这样做的内容脚本将发送消息以请求该特定主机的使用时间。根据我目前对sendResponse
的作用的理解,上面的代码(特别是行console.log(res)
)应该能够记录响应消息。但是,这不是预期的,并且代码行什么都不做(甚至可能没有达到)。
此外,如果我尝试通过chrome.tabs.sendMessage
在后台发送消息并提供相应的标签ID,那么它可以正常工作(如预期的那样),但在后台触发另一个sendMessage
太麻烦了方式。
这到底发生了什么? sendResponse
和chrome.tabs.sendMessage
之间有什么区别?为什么我的代码不起作用?
非常感谢任何帮助。