当铬启动我的浏览器扩展程序的负载,一切似乎是确定和chrome.extension.getBackgroundPage()返回正确的值(从popup.js午饭)。 但一段时间(2-3分钟)后,特别是在浏览器更别说,该函数返回null。 只有在关闭并重新打开铬解决了这个问题。 我试图通过操纵它:
if (chrome.extension.getBackgroundPage() == null) window.location.reload(true);
截至提出为什么chrome.extension.getBackgroundPage()返回null? ,有时会有所帮助,但大部分只是不断刷新的应用程序,以便铬必须是封闭的时代。 没有任何人有一个想法是什么地方出错了?
根据所引用的页面( 事件和背景页之间的差异 ),有一个更好的选择,以获得背景,同时还利用活动页面:
如果您的扩展使用,extension.getBackgroundPage,切换到runtime.getBackgroundPage代替。 较新的方法是异步的,以便它可以在必要时启动该活动页面返回之前。
这个工作很适合我,只是做你的工作在异步回调,接收后台页面作为函数参数。
下面是该方法的规范runtime.getBackgroundPage
改变你的背景(活动页面),以一个真实的背景页。
修改清单文件从
"background": {
"scripts": [
"background.js"
],
"persistent": false
}
至
"background": {
"scripts": [
"background.js"
],
"persistent": true
}
活动页面非常相似背景的网页,有一个重要的区别:需要时,才活动页面加载。 当活动页面不主动做一些事情,它被卸载,释放内存等系统资源。
参考