pwa能否通过JS主动弹出添加到主屏的提示?
现在PWA的添加到主屏幕的机制比较的被动,希望能在每次打开PWA页面的时候提示添加到主屏幕(前提是没有安装到主屏幕),然后看到这篇文章:
https://blog.nfz.moe/archives...
意思是添加下面的代码就可以:
window.addEventListener('beforeinstallprompt', event => {
event.userChoice.then(result => {console.log(result.outcome)
})
})
实际测试结果发现,并没有弹出添加到桌面的提示。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
刚在项目里实现完,发现有两个坑。
重点:
代码在这里(TypeScript版本,如果你是JS,去掉代码里的类型就行):
这里有一个坑就是:在通过
prompt()
触发PWA安装弹框后,用户点击取消(不安装)后,会再次触发beforeinstallprompt
。一定要记住这点。所以一开始我没有
'init'
的逻辑,就会导致每次用户点击页面,都会触发安装弹框,每次都会。就是因为走完click事件之后,虽然执行了
deferredPrompt = null;
,但用户取消安装,就又走到了deferredPrompt = e;
,然后用户点击页面,又会触发prompt()
。第二个坑: 浏览器触发
beforeinstallprompt
的时机很早,所以这段代码不能放在很后面,比如放在页面某个接口返回后就不行,因为浏览器已经触发过了,再写listener 晚了。尽量放在
index.html
里,或者index.html
下的某个js
的顶层。什么是顶层?
什么浏览器?目前这一事件只有Chrome浏览器支持: