我正在尝试学习chrome扩展程序开发。
我在那里看到了类似manifest.json
"background" : {
"scripts": ["Scripts/event.js"],
"persistent": false
},
在这里,我无法理解"persistent": false
的含义,根据我非常模糊的理解,我认为无论后台页面是否始终在后台运行都可以解决。
因此,如果 persistent为true ,即使我们正在处理标签页,它也会运行吗?如果它是错误的,它将停止它不会在我们离开浏览器时停止?
答案 0 :(得分:0)
因为扩展名是chrome浏览器的一部分,而不是文档的一部分,
我想他们想解决这个问题,并尽可能减少设计和使用中的使用量
我有这个背景脚本
chrome.contextMenus.create(
{
id : "simpleMenuItem" ,
title : "nothing to be displayed" ,
contexts : ["selection"] ,
onclick : doThat
}
)
function doThat(info , tab) {
window.alert("this is a message")
)
使用
"background" : {
"scripts" :["file.js"] ,
"persistent" : false
},
在第一种情况下,当我在onclick之后没有使用回调函数时,导致运行时错误;而当我删除“ persistent:false”时,它运行良好,并且我仍然可以使用回调函数< / p>
当我使用单独的事件侦听器时
chrome.contextMenus.create(
{
id : "simpleMenuItem" ,
title : "Translate '%s' to EN-US" ,
contexts : ["selection"] ,
}
)
chrome.contextMenus.onClicked.addListener(
function doThat(info,tab) {
if(info.menuItemId = "simpleMenuItem") {
window.alert("this is a message")
}
}
)
这也完成了工作
但是当我在每种情况下在任务管理器中监视内存时:
-第一个-发生运行时错误-:安装后约10秒钟后卸载事件页面
-第二种情况:即使菜单项被触发时,事件页面在后台仍处于活动状态
-第三种情况相对闲置;因为安装后以及每次触发onClicked事件时,事件页面仅运行约10秒
答案 1 :(得分:0)
来自文档:
保持后台脚本持续活动的唯一情况是扩展程序使用 chrome.webRequest API 来阻止或修改网络请求。 webRequest API 与非持久性后台页面不兼容。
https://developer.chrome.com/docs/extensions/mv2/background_pages/