我想知道如何仅为特定/指定的域名运行Chrome扩展程序的后台脚本吗?
例如,如果扩展程序仅在Google.com的网页上运行,那么没有理由让后台脚本在任何其他域上运行。
在我的清单文件中,我设置了#34;匹配"但我仍然可以在每个域和标签上看到后台脚本运行。
...
"background": {
"matches": [
"*://*.google.com/*"
],
"scripts": ["scripts/background.js"],
"persistent": false
},
"content_scripts": [
{
"matches": [
"*://*.google.com/*"
],
"css": ["styles/default.css"],
"js": ["scripts/jquery.js", "scripts/default.js"]
}
],
"permissions": [
"storage",
"declarativeContent",
"tabs"
],
...
修改
添加更多有助于了解我的目标的信息:
我有一个内容脚本和一个弹出窗口,弹出窗口被用作遥控器,可以选择和播放选项,最终会影响页面。
当更改弹出窗口中的选项时,它会将其值发送到后台/事件脚本,将其临时保存在变量中,然后发送到内容脚本,在该脚本中它实际执行并显示在用户的页面
我希望只有当用户离开特定域时,后台/事件脚本才会将设置保存到存储中,因此只有一个存储保存任务而不是每次用户更改弹出窗口中的设置时。
将设置保存到存储并且用户离开后,我不想再将其运行到背景中了。
答案 0 :(得分:2)
您误解了背景页面的用途以及"persistent": false
的含义。
背景页面未运行"对于"任何领域;它只是运行。每个扩展程序一份。看看Architecture Overview。
但是,如果您担心它会消耗资源,则会向清单添加"persistent": false
。这使它成为Event page,当它无法正常工作时会被卸载。
如果您的活动页面仅通过内容脚本唤醒,那么您已达到目标:当不需要时,它将无法运行。
完全由您来构建背景页面,以便在您不需要它时闲置。既然你还没有告诉它应该做什么 - 那么......
请阅读Event page documentation,您需要了解重要的限制。