Chrome Extension Persistent

时间:2018-06-26 21:52:34

标签: google-chrome google-chrome-extension google-chrome-devtools

我正在尝试学习chrome扩展程序开发。

我在那里看到了类似manifest.json

 "background" : {
      "scripts": ["Scripts/event.js"],
      "persistent": false
    }, 

在这里,我无法理解"persistent": false的含义,根据我非常模糊的理解,我认为无论后台页面是否始终在后台运行都可以解决。

因此,如果 persistent为true ,即使我们正在处理标签页,它也会运行吗?如果它是错误的,它将停止它不会在我们离开浏览器时停止?

2 个答案:

答案 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/