Chrome扩展程序:sendResponse vs chrome.tabs.sendMessage

时间:2015-01-11 15:24:50

标签: javascript google-chrome-extension

我对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太麻烦了方式。

这到底发生了什么? sendResponsechrome.tabs.sendMessage之间有什么区别?为什么我的代码不起作用?

非常感谢任何帮助。

0 个答案:

没有答案