Chrome扩展程序sendMessage

7
这里的文档看起来很糟糕:http://code.google.com/chrome/extensions/messaging.html 我希望我的内容脚本能够在页面上有textarea时显示一个pageIcon。
我的content.js(使用jquery)如下:
$('textarea').each(function() {
    chrome.extension.sendMessage({greeting: "hello"}, function(response) {
       console.log(response);
    });
});

然后我的background.js有这个:

chrome.extension.onMessage.addListener(

    function(request, sender, sendResponse) {
        chrome.pageAction.show(sender.tab.id);
    } 
});

这应该非常简单。如果有一个文本框,就显示图标。

我尝试了各种样例代码的变化,但什么都不起作用。我得到的一直是:

端口错误:无法建立连接。接收端不存在。

在控制台中。

您有任何想法我做错了什么吗?


2
Chrome扩展文档通常很好。你没有正确阅读文档:监听chrome.extension.onmessage事件只接收一个参数:包含requestsendersendResponse的对象(自Chrome 20起,onRequestsendRequest已被替换为onMessagesendMessage)。虽然这可能不是错误的原因。你确定onMessage事件监听器已经被附加(即没有出现错误)吗? - Rob W
将 onMessage 更改为 onRequest,然后再试一次,如果错误仍然存在,则必须查看后台脚本的控制台日志(在扩展 -> 检查视图中:*** 应该是您的脚本,只需单击并转到控制台,查看错误消息)。 - Aleksandar Toplek
1个回答

7
我认为你的后台脚本里有一个多余的花括号。
chrome.extension.onMessage.addListener(

    function(request, sender, sendResponse) {
        chrome.pageAction.show(sender.tab.id);
    } 
});

应该是

chrome.extension.onMessage.addListener(

    function(request, sender, sendResponse) {
        chrome.pageAction.show(sender.tab.id);
    } 
);

我正在调用sendResponse(来自扩展程序)以发送一些内容,但没有被调用。请帮忙。 - pavan

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