【问题标题】:Chrome extension sendMessageChrome 扩展程序 sendMessage
【发布时间】:2012-07-17 21:28:02
【问题描述】:

这里的文档看起来很糟糕:http://code.google.com/chrome/extensions/messaging.html

我想要我的内容脚本,如果页面上有一个文本区域,则只是显示一个 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);
    } 
});

这应该非常简单。如果有文本区域,请显示图标。

我尝试了示例代码的各种变体,但没有任何效果。我得到的只是:

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

在控制台中。

任何想法我哪里出错了?

【问题讨论】:

  • Chrome 扩展的文档通常非常出色。您没有正确阅读文档:chrome.extension.onmessage 的事件侦听器仅接收一个参数:包含 requestsendersendResponse 的对象。 (从 Chrome 20 开始,onRequest and sendRequest have been replaced with onMessage and sendMessage)。不过,这可能不是错误的原因。您确定附加了onMessage 事件监听器(即没有发生错误)?
  • 将 onMessage 更改为 onRequest 并再试一次,如果错误仍然存​​在,那么您必须查看后台脚本的控制台日志(在 Extensions -> Inspect Views: *** 应该有您的脚本,然后点击转到控制台,查看错误消息)

标签: javascript google-chrome google-chrome-extension sendmessage


【解决方案1】:

我认为你在后台脚本中有一个额外的大括号。

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(from extension) 以发送一些内容,但没有被调用。请帮忙。
猜你喜欢
  • 1970-01-01
  • 2014-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-26
相关资源
最近更新 更多