chrome扩展中的后台脚本和内容脚本之间的区别

时间:2012-10-18 05:04:59

标签: google-chrome google-chrome-extension content-script

正如问题所说, 我只是想知道chrome扩展中的后台脚本和内容脚本之间的区别。当我在两个脚本中记录chrome对象时,我发现了不同的对象。

用例

我想在点击图标时将我的javascript注入页面所以在manifest.json我添加了一个内容脚本,但我无法在内容脚本中听取图标点击事件。

  

chrome.browserAction未在内容脚本中的chrome对象中定义。

问题

如何在内容脚本中收听点击事件。我们可以同时包含背景和内容脚本吗?

这是我的manifest.json

{
  "name": "First Plugin Testing",    
  "version": "1.0",
  "manifest_version": 2,    
  "description": "Trying hands on first extension",
  "background": { "scripts": ["background.js"] },
  "browser_action": {
    "default_icon": "icon.png"
  },
  "permissions": [
    "tabs", "http://*/*", "https://*/*"
  ],
  "content_scripts": [
    {
      "matches": ["http://*/*"], 
      "js": ["temp.js"]
    }
  ]
}

1 个答案:

答案 0 :(得分:17)

我找到了问题的答案。

  

一个。我们可以同时包含内容脚本和后台脚本吗?

,我们可以在清单中包含后台脚本和内容脚本。 要在它们之间进行互动,您可以使用Chrome Message Passing API

我做的方式相同,但背景脚本中有一些错误,我看不到,因此我在google上搜索后发布了这个问题。

  

B中。如何在内容脚本中收听点击事件?

解决方案:我们无法在内容脚本中使用browser click event。它只能部分访问chrome对象所以你必须在后台脚本中接收点击处理程序并将消息发送到内容脚本并做你想做的任何事情。

在后台脚本中使用chrome.browserAction.onClicked事件,然后使用message passing将信息发送到用户点击图标的内容脚本。