我很好奇是否有人知道基于javascript的方法来检测网络体验是作为PWA(渐进式网络应用程序)运行还是只是作为标准移动网站运行(具有完整的浏览器UI).
"已安装"的PWA与尚未注册的服务工作者和/或应用程序缓存的PWA之间是否存在任何差异?
如果这是出于分析目的,您可以在清单文件中设置起始URL以包含查询字符串参数,例如:
"start_url": "./?mode=standalone"
然后在JavaScript中,您可以检查此查询字符串参数.
或者,您可以使用以下命令检入JavaScript:
if (window.matchMedia('(display-mode: standalone)').matches) { console.log("This is running as standalone."); }
编辑2019年10月11日:添加了一个额外的开关来检查应用是否通过TWA启动-document.referrer.includes('android-app://')
这适用于所有人-TWA,Chrome和Safari:
const isInStandaloneMode = () => (window.matchMedia('(display-mode: standalone)').matches) || (window.navigator.standalone) || document.referrer.includes('android-app://'); if (isInStandaloneMode()) { console.log("webapp is installed") }