【问题标题】:Chrome Extension PersistentChrome 扩展持久化
【发布时间】:2018-12-05 16:52:36
【问题描述】:

我正在尝试了解 chrome 扩展开发。

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

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

在这里,我无法理解"persistent": false 是什么意思,根据我非常模糊的理解,我认为它处理后台页面是否应该始终在后台运行。

所以如果 persistent 为真,即使我们在标签上工作它也会运行?如果它是假的,它会停止它不会在我们离开浏览器的那一刻停止?

【问题讨论】:

  • 当它为false时,后台页面在5秒无活动后自动卸载,即5秒内没有监听器被调用。请注意,背景页面是一个单独的隐藏页面,与网页没有任何关系。有关详细信息,请参阅文档。
  • 关于在文档中何处找到此内容的任何提示?
  • tl;dr,上面的页面引用“保持后台脚本持续活动的唯一情况是扩展程序使用 chrome.webRequest API 来阻止或修改网络请求。webRequest API 与非- 持久的背景页面。”

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


【解决方案1】:

来自文档:

保持后台脚本持续活动的唯一情况是扩展程序使用 chrome.webRequest API 来阻止或修改网络请求。 webRequest API 与非持久后台页面不兼容。

https://developer.chrome.com/docs/extensions/mv2/background_pages/

【讨论】:

    【解决方案2】:

    因为扩展是 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”时,它工作得很好,我仍然可以使用回调函数

    当我使用单独的事件监听器时

    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 秒

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-03
      • 2021-06-11
      • 1970-01-01
      • 2019-01-20
      • 1970-01-01
      相关资源
      最近更新 更多