25

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

这就是我的意思:

在我的清单文件中:

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

现在在background.js文件中:

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

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

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

4

4 回答 4

33

后台脚本应该被视为“在 Chrome 浏览器的后台运行” 。
您想要的效果(为每个页面运行一个脚本)实际上是内容脚本的任务。

要了解更多信息,请阅读https://developer.chrome.com/extensions/overview.html#arch

于 2013-07-08T20:16:30.433 回答
4

这是因为您使用的是后台页面.. 使用事件页面而不是稍微修改 manifest.json.. 尝试添加:

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

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

于 2015-10-21T07:47:36.653 回答
2

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

于 2017-10-17T10:04:22.790 回答
0

后台脚本是在后台运行的脚本,用于处理内容脚本无法处理的大多数 chrome 事件。内容脚本纯粹是每个页面的内容。两者都不能互相交谈,但是,您可以给脚本侦听器(例如chrome.browserAction.addListener(myFunction),当单击屏幕右上角的扩展程序按钮时播放功能)命令来确定按钮是否已被按下,甚至发送一个从后台脚本到页面控制台的消息。

https://youtu.be/ew9ut7ixIlI 这个视频对我来说是一个很好的背景脚本介绍,然而,他开始谈论听众的部分是6:30

于 2019-01-06T22:37:01.697 回答