如何无需刷新页面以编程方式将运行中网站切换为PWA
关于无重载切换站点为PWA的编程实现说明
核心结论:站点无法通过编程方式直接触发Chrome等浏览器原生菜单里的PWA安装操作,也不能在无用户主动交互的情况下静默完成PWA切换。
- 标准PWA安装流程本身就不需要重载正在运行的站点:当站点满足PWA基础要求(配置合法的Web App Manifest、注册可正常运行的Service Worker、部署在HTTPS环境、达到浏览器规定的用户参与度阈值),浏览器会自动触发
beforeinstallprompt事件。你可以在页面逻辑中拦截这个事件保存实例,在用户主动点击你自定义的安装按钮时,调用事件实例的prompt()方法唤起安装确认弹窗。整个安装流程不会刷新当前页面,页面已有的运行状态(包括内存中的JS数据、用户输入的表单内容、滚动位置等)会完全保留,安装完成后当前页面会直接归属到PWA应用的窗口中,不需要重新加载。 - 你截图里的Chrome菜单自带的「安装网站为应用」入口是浏览器层面的原生功能,属于用户可控的浏览器内置操作,没有对外暴露可供站点调用的JS接口,站点代码既不能主动触发这个操作,也无法检测用户是否通过这个菜单入口完成了PWA安装。
- 所有现代浏览器都对PWA安装做了强制的交互限制:任何唤起PWA安装流程的操作,都必须由用户主动的手势行为(比如点击按钮)触发,不允许站点在后台静默触发,这是为了防止站点未经用户许可强行安装应用、干扰用户正常使用。

内容的提问来源于stack exchange,提问作者DivyeshLakhotia
相关产品推荐
相关产品推荐

