iOS 上的 Safari 浏览器中有一个“发送到屏幕”的功能(虽然很多小白用户都不知道这个),用户是可以把网站的URL以一个快捷方式的形式添加到主屏幕的,展示形式跟原生的应用是一样并最大限度地模拟本地APP 的效果,此所谓 Web APP 是也。
不过,现在发现了个问题,就是通过主屏幕上点击进入 Web APP 形式的网页时候,点击任何一个链接就会跳转到 Safari 浏览器并新建一标签页打开所属链接。
以下为解决这一问题的代码,实地测试在 iOS 9.3.5 上测试通过,代码应该兼容性不错,在这里分享:
<script type="text/javascript">
//iOS Web APP中点击链接跳转到 Safari 浏览器新标签页的问题
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>
建议将代码放到 /head 标签前,当然,另外存为一个 js 文件引用也是可以的。