为什么chrome.runtime在内容脚本中未定义?

时间:2017-05-29 04:30:40

标签: javascript google-chrome-extension

我有一个非常简单的chrome扩展,我试图将消息从后台脚本传递到内容脚本。但chrome.runtime未定义。

以下是所有代码,因为你可以看到它几乎没有任何代码。在内容脚本中,运行时未定义。

后台脚本:

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.runtime.sendMessage({action: 'someAction'}, 
    function(response) {
      console.log('Response: ', response);
    });
});

内容脚本:

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
  sendResponse({
    user: 'user'
  });
});

的manifest.json

{
  "manifest_version": 2,
  "name": "My Extension",
  "version": "1.0",

  "description": "Some stupid extension",

  "browser_action": {
    "default_icon": "icons/MyExtensionIcon.png"
  },
  "icons": {
    "48": "icons/MyExtensionIcon.png"
  },
  "permissions": [
    "tabs",
    "storage",
    "https://*/",
    "http://*/"
  ],
  "content_scripts": [
    {
      "matches": ["*://*.twitter.com/*", "https://twitter.com/*"],
      "js": ["js/content.js"]
    }
  ],
  "background": {
    "scripts": ["js/background.js"],
    "persistent": true
  },
  "web_accessible_resources": [
    "js/*",
    "css/*"
  ]
}

其他信息:

  • Chrome版本58.0.3029.110(64位)
  • 安装我的扩展程序 "解包扩展"使用开发者模式

1 个答案:

答案 0 :(得分:14)

好的我明白了。这绝对是愚蠢的,但看起来这只是一个Heisenbug。通过添加断点或调试器语句,它会导致该值未定义。也许是一个铬虫?

我发誓,每天Chrome感觉更多,而且like Internet Explorer.

更多