添加到主屏幕
——这个功能属于ios的safari浏览器的特性之一,他可以让我们的H5项目从桌面像App一样打开,其实就是支持全屏显示
,可以隐藏搜索栏,并且注意,他是独立的缓存
,这一点在某些需要带上特点参数的项目会有些头疼,例如需要根据特点参数才能打开某些页面,处理某些逻辑,这点需要注意一下!
可以看到,这里是可以指定添加到主屏幕的名称、图片
这种功能特性是得益于safari浏览器针对于ios设备的支持
设置添加到主屏幕应用的名称:
控制是否添加到桌面的关键,yes为开启导航栏,no为关闭:
添加到主屏幕的引导图标:
桌面应用图标:
<%= htmlWebpackPlugin.options.title %> static/index.<%= VUE_APP_INDEX_CSS_HASH %>.css" />
这个问题在一开始,我是考虑在url上带上特定参数,来判定,但是在Uniapp多页面的情况下,路由路径发生变化后,携带的参数会被清除,后来我看到了一个特定的参数。
注意前提:需要开启全屏显示,这是关键
开启了全屏显示之后,从主屏幕的打开的H5项目
("standalone" in window.navigator) && window.navigator.standalone
window.navigator中会存在standalone
,并且该参数为true
,通过这个就能判断了。
如果你的项目并不依赖于携带参数来实现整体项目的逻辑,那么上面的实现已经足够了,但是如果依赖于链接上携带参数,并且是多页面应用,(例如我的项目是需要根据商铺id去找到对应的商铺),那么我们就需要考虑如果让用户点击任何一个页面都能够跳到指定的页面,正确的去添加到主屏幕
。
请你把参数这样写:
window.history.pushState({}, 0, 'http://' + window.location.host +'/static-u/index.html?shopid=' + shopid + '#/')
把参数写在index.html之后,这样开启哈希路由之后,参数是不会被丢弃的,首页面是不会变化的。