将手机网页封装成app也是行业中的一些基本操作,但是对于十分折腾人的ios而言,可能一个简单的app封装都没那么容易搞定,因为如果直接的网页封装,里面的所有超链接,都会在点击之后从app跳出,进入ios的浏览器。这对于用户而言是非常不好的体验。因为都是每个链接都跳到浏览器了,那封装的意义在哪里?所以我也搞不懂ios这种反人类操作是为了什么,反正安卓的封装就可以好端端的搞定。
所以,再次差评,垃圾ios毁我青春。
解决方案如下,在网站的全局js中或者全局头部加如下代码:
<script type="text/javascript">
if(("standalone" in window.navigator) && window.navigator.standalone){
var noddy, remotes = false;
document.addEventListener('click', function(event) {
noddy = event.target;
while(noddy.nodeName !== "A" && noddy.nodeName !== "HTML") {
noddy = noddy.parentNode;
}
if('href' in noddy && noddy.href.indexOf('http') !== -1 && (noddy.href.indexOf(document.location.host) !== -1 || remotes))
{
event.preventDefault();
document.location.href = noddy.href;
}
},false);
}
</script>
具体的含义解释就是,监听整个页面的a标签点击事件,拦截默认的跳转,而是读取超链接的href属性,再通过js的形式进行跳转,这样就完全避免了ios封装内跳出的问题。