Google Chrome扩展程序 - 后台脚本

时间:2013-07-08 20:10:45

标签: google-chrome google-chrome-extension

在浏览Chrome扩展程序后,我注意到当您在chrome://extensions页面上时,清单文件中启动的后台脚本将运行,就像您只是浏览互联网或扩展程序之外的其他页面一样页面后台脚本将无法运行。

这就是我的意思:

在我的清单文件中:

"background": {
    "scripts": ["jquery-latest.js","background.js"]
  },

现在在background.js文件中:

$(document).ready(function(){
    alert("working");
});

我使用一个简单的警报功能来查看这是否有效,并发现alert("working");仅在我chrome://extension目录时显示。如果我去google.com或类似的东西,没有雪茄。

我的问题在于,为什么会发生这种情况?如何更改它以便无论如何都会发出警报。

4 个答案:

答案 0 :(得分:27)

background script应被视为“在Chrome浏览器的后台运行” 您期望的效果(为每个页面运行脚本)实际上是content scripts的任务。

要了解详情,请阅读https://developer.chrome.com/extensions/overview.html#arch

答案 1 :(得分:3)

这是因为你正在使用背景页面..通过略微修改manifest.json来使用事件页面。 尝试添加:

"background": {
    "scripts": ["jquery-latest.js","background.js"],
    "persistent": false
  },

有关活动页面的详细信息,请查看以下内容:https://developer.chrome.com/extensions/event_pages

答案 2 :(得分:2)

产生效果是因为无论何时加载chrome://extensions它都会强制重新加载扩展,使用CTRL + R可以重现相同的行为。因此,每次,后台页面都会重新加载,这在其他页面的情况下不会发生。

答案 3 :(得分:0)

后台脚本是在后台运行的脚本,用于处理内容脚本无法处理的大多数chrome事件。内容脚本纯粹是每个页面的内容。两者不能互相讲话,但是,您可以给脚本侦听器(例如,单击扩展名在屏幕右上角的按钮时,chrome.browserAction.addListener(myFunction)会发挥作用)以查找是否已按下按钮。甚至从后台脚本发送消息到页面的控制台。

https://youtu.be/ew9ut7ixIlI 该视频对我来说是关于背景脚本的精彩介绍,但是,他开始谈论听众的部分是6:30