我想知道如何仅针对特定/指定域运行 Chrome 扩展程序的后台脚本?
例如,如果扩展程序仅在 Google.com 的页面上运行,则没有理由让后台脚本在任何其他域上运行。
在我的清单文件中,我设置了“匹配”,但我仍然可以看到后台脚本在每个域和选项卡上运行。
...
"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"
],
...
Edit
添加更多有助于理解我的目标的信息:
我有一个内容脚本和一个弹出窗口,弹出窗口被用作远程控制,其中包含可供选择和使用的选项,最终将影响页面。
当更改弹出窗口中的选项时,它将其值发送到后台/事件脚本,临时保存在变量中,然后发送到内容脚本,在内容脚本中实际执行并显示在页面上用户。
我希望只有当用户离开特定域时,后台/事件脚本才会将设置保存到存储中,这样就只有一个存储保存任务,而不是每次用户在弹出窗口中更改设置时。
设置保存到存储并且用户离开后,我不想再在后台运行它了。
您误解了背景页的用途和用途"persistent": false
means.
后台页面不“针对”任何域运行;它只是运行。每个扩展一个副本。看看架构概述.
但是,如果您担心它消耗资源,您可以添加"persistent": false
到清单。这使其成为活动页面,当它不工作时被卸载。
如果您的活动页面仅由内容脚本唤醒,那么您就达到了您的目标:不需要时它不会运行。
正确构建后台页面完全取决于您,以便在您不需要它时它处于空闲状态。既然你还没有告诉它应该做什么 - 好吧..
请阅读活动页面文档,您需要了解一些重要的限制。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)