chrome.extension.getBackgroundPage()一段时间后,返回null(c

2019-07-20 01:43发布

当铬启动我的浏览器扩展程序的负载,一切似乎是确定和chrome.extension.getBackgroundPage()返回正确的值(从popup.js午饭)。 但一段时间(2-3分钟)后,特别是在浏览器更别说,该函数返回null。 只有在关闭并重新打开铬解决了这个问题。 我试图通过操纵它:

if (chrome.extension.getBackgroundPage() == null) window.location.reload(true);

截至提出为什么chrome.extension.getBackgroundPage()返回null? ,有时会有所帮助,但大部分只是不断刷新的应用程序,以便铬必须是封闭的时代。 没有任何人有一个想法是什么地方出错了?

Answer 1:

根据所引用的页面( 事件和背景页之间的差异 ),有一个更好的选择,以获得背景,同时还利用活动页面:

如果您的扩展使用,extension.getBackgroundPage,切换到runtime.getBackgroundPage代替。 较新的方法是异步的,以便它可以在必要时启动该活动页面返回之前。

这个工作很适合我,只是做你的工作在异步回调,接收后台页面作为函数参数。

下面是该方法的规范runtime.getBackgroundPage



Answer 2:

改变你的背景(活动页面),以一个真实的背景页。

修改清单文件从

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

"background": {
        "scripts": [
            "background.js"
        ],
        "persistent": true
    }

活动页面非常相似背景的网页,有一个重要的区别:需要时,才活动页面加载。 当活动页面不主动做一些事情,它被卸载,释放内存等系统资源。

参考

  • 事件和背景页之间的区别


文章来源: chrome.extension.getBackgroundPage() returns null after awhile