Chrome扩展中背景脚本和内容脚本的区别

25

这个问题想要知道chrome扩展中背景脚本和内容脚本的区别。当我在两个脚本中记录chrome对象时,发现它们的对象不同。

用例

我想在单击图标时将我的JavaScript注入页面,因此在manifest.json中添加了一个内容脚本,但是我无法在内容脚本中监听图标单击事件。

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

问题

如何在内容脚本中监听单击事件?能同时包含背景脚本和内容脚本吗?

这是我的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个回答

17

我已经找到了所问的问题的答案。

A. 我们可以同时包含内容脚本和后台脚本吗?

是的,我们可以在清单中同时包含后台脚本和内容脚本。 为了在它们之间进行交互,您可以使用Chrome消息传递API

我也是这样做的,但后台脚本中有一些错误,我无法看到,因此在在谷歌搜索一番后,我发布了这个问题。

B. 如何监听内容脚本中的点击事件?

解决方案:内容脚本中不能有浏览器点击事件。它只能部分访问chrome对象,因此您必须在后台脚本中接收点击处理程序并向内容脚本发送消息,然后执行任何操作。

在后台脚本中使用chrome.browserAction.onClicked事件,然后使用消息传递将信息发送到内容脚本,告诉它用户单击了图标。


10
内容脚本和背景脚本之间的区别是什么? - sdfsdf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接