浏览器跳转安卓app

采用设置一个延迟定时器 setTimeout 的方式,第一时间尝试唤起 app,如果 200ms 没有唤起成功,则默认本地没有安装 app,200ms 以后,将会触发下载行为。

var timer = null;
var ifr = document.createElement('iframe');
ifr.src = 'miweng://xcxwap.com/MiDai';
ifr.style.display = 'none';
document.body.appendChild(ifr);
timer = setTimeout(function () {
    window.location.href = `app安卓路径`
}, 1000);

想法很美好,现实很残酷。一测试,就发现简单的这样实现有许多的问题。 第一个问题在于,当页面成功唤起 app 之后,我们再切换回来浏览器,发现跳转到了下载页面。 为了解决这个问题,发现各个公司都进行了不同方式的尝试。 也是历经的很多折磨,发现了几个比较有用的事件。 pageshow 页面显示时触发,在 load 事件之后触发。需要将该事件绑定到 window 上才会触发 pagehide 页面隐藏时触发 visibilitychange 页面隐藏没有在当前显示时触发,比如切换 tab,也会触发该事件 document.hidden 当页面隐藏时,该值为 true,显示时为 false 由于各个浏览器的支持情况不同,我们需要将这些事件都给绑定上,即使这样,也不一定能够保证所有的浏览器都能够解决掉这个小问题,实在没办法的事情就不管了。 因此需要扩充一下上面的方案,当本地 app 被唤起,则页面会隐藏掉,就会触发 pagehide 与 visibilitychange 事件

 $(document).on('visibilitychange webkitvisibilitychange', function () {
    var tag = document.hidden || document.webkitHidden;
    if (tag) {
        clearTimeout(timer);
    }
})

$(window).on('pagehide', function () {
    clearTimeout(timer);
})
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值