【问题标题】:Message Passing from Content Scripts to Background Page in Chrome Extensions消息从内容脚本传递到 Chrome 扩展中的后台页面
【发布时间】:2011-10-07 18:35:49
【问题描述】:

Google Chrome 扩展消息传递问题:

在这个 Chrome 扩展中

我的弹出页面:

chrome.browserAction.onClicked.addListener(getMessage);
getMessage();

function getMessage()
{
    chrome.tabs.getSelected(null, function(tab) {
        chrome.tabs.sendRequest(tab.id, {greeting: "hello"}, function(response) {
            console.log(response.farewell);
        });//getting response from content script
    });
}

我的脚本页面:

chrome.extension.onRequest.addListener(
  function(request, sender, sendResponse) {
    if (request.greeting == "hello")
      sendResponse({farewell: "goodbye"});
    else
      sendResponse({}); 
  });

我没有从内容脚本中得到任何响应。

编辑:

根据@serg,我已将代码移至后台页面。但是还是不行

【问题讨论】:

  • 是的,这是当前选中标签的id

标签: javascript google-chrome-extension message-passing


【解决方案1】:

如果您在浏览器操作按钮上附加了弹出页面,则不能有chrome.browserAction.onClicked 侦听器,它不会触发。

  • 删除弹出窗口,仅保留按钮
  • 将所有内容移至背景页面。
  • tab.id 替换为null
  • 删除开头的 createFile(); 调用,因为在这种情况下它不会做任何事情(内容脚本尚未准备好收听)。
  • 不要使用警报来调试扩展,使用console.log()

【讨论】:

  • 我已将代码编辑为实际代码,对我来说效果很好,请检查
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-15
  • 1970-01-01
  • 2015-11-09
相关资源
最近更新 更多