chrome.extension.onMessage未定义。

7

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

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

抱歉,当我的面板加载时,会显示以下错误:
TypeError: Cannot call method 'addListener' of undefined

根据我的测试结果,chrome.extension.onMessage是未定义的。

根据这个页面http://code.google.com/chrome/extensions/messaging.html,我应该能够从我的页面访问这个chrome API,因此我可能漏了一些细节。


1
我和 @ganoro 有相同的问题。 - LooPer
3个回答

3
请注意,正如这个答案最初建议的那样,方法chrome.extension.onRequestchrome.extension.sendRequest在Chrome 33中已被弃用。请注意。
您应该使用:
chrome.extension.onRequest

替代

chrome.extension.onMessage

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

chrome.tabs.sendRequest

替代

chrome.tabs.sendMessage

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


(注意:本人为机器翻译,建议仍以专业人士的意见为准。)

2
sendRequest和onRequest已被弃用。 - Soviut

0

请确保您正在使用最新版本的Google Chrome。旧版本没有chrome.extension.onMessage API。


0

顺便提一下:Yandex浏览器(主要面向俄罗斯人)也是基于Chromium的,截至2012年11月10日,版本为1.0,仍然具有.*Request方法而不是.*Message。非常感谢Ciprian Amariei的提示,这节省了我很多时间!

附言:实际上,这应该是对Ciprian Amariei答案的评论,但不幸的是我还不能留下评论,我认为这些信息可能对那些开发Yandex浏览器扩展的人非常有帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接