Google Chrome扩展程序中的简单消息传递

时间:2016-07-03 13:57:07

标签: google-chrome messaging

我尝试为chrome编写简单的插件,我有内容脚本和扩展本身。根据谷歌文档,我尝试设置简单的消息传递: Here

这是我的manifest.json文件:

{
  "manifest_version": 2,

  "name": "My Plugin",
  "description": "My Plugin",
  "version": "1.0",

  "browser_action": {
   "default_icon": "icon.png",
   "default_popup": "popup.html"
  },
  "permissions": [
    "activeTab"
  ],
  "content_scripts": [
    {
      "matches": ["*://*/*"],
      "js": ["js/content.js"]
    }
  ]
}

这是content.js档案:

chrome.runtime.onMessage.addListener(
  function (request, sender, sendResponse) {
      debugger;
      if (request.action === "GetPageContent") {
          sendResponse({ dom: document.documentElement.outerHTML });
      }
  }
);

这是来自app.js的片段代码,它将消息发送到内容脚本文件:

    chrome.tabs.getSelected(null, function (tab) {
        chrome.tabs.sendMessage(tab.id, { action: "GetPageContent" }, function (response) {
            console.log(response);
        });
    });

因此,当我点击按钮触发执行时,它在content.js文件中失败 在线sendResponse({ dom: document.documentElement.outerHTML });

说:

chrome.runtime.onMessage.addListener
 Error in event handler for runtime.onMessage:
 Error: Attempting to use a disconnected port object

这是什么意思?我没有使用任何端口,也在谷歌文档中也没有任何提及简单消息的端口。 谢谢!

1 个答案:

答案 0 :(得分:0)

我找到了一个原因,Chrome开发者控制台,如果它在我测试我的扩展程序的同时打开,则会发生此错误。