chrome.extension.onMessage未定义

gan*_*oro 7 api google-chrome google-chrome-extension

我有一个简单的插件,只是做这样的事情:

chrome.extension.onMessage.addListener(function(msg, _, sendResponse) {
    log("Got message from background page: " + msg);
});
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我的面板加载时,显示以下错误:

TypeError: Cannot call method 'addListener' of undefined
Run Code Online (Sandbox Code Playgroud)

并根据我的测试chrome.extension.onMessageundefined

根据此页面http://code.google.com/chrome/extensions/messaging.html我应该能够从我的页面访问此chrome API,因此它必须是我在这里缺少的小东西......

小智 3

请注意,方法chrome.extension.onRequestchrome.extension.sendRequest,正如本答案最初建议的那样,从 Chrome 33 开始已被弃用。


你应该使用

chrome.extension.onRequest
Run Code Online (Sandbox Code Playgroud)

代替

chrome.extension.onMessage
Run Code Online (Sandbox Code Playgroud)

在后台页面或任何其他扩展脚本中:

chrome.tabs.sendRequest
Run Code Online (Sandbox Code Playgroud)

代替

chrome.tabs.sendMessage
Run Code Online (Sandbox Code Playgroud)

(该文档已过时......向谷歌团队发出警报;))

  • sendRequest 和 onRequest 已弃用。 (2认同)