H5跳转APP 并切换到后台问题解决

JQ写法

原理是:首先跳转APP链接 利用定时器 延迟触发跳转下载地址链接

缺点是:不能直观的知道是否打开了APP,万一用户点击了取消跳转APP或者点击后长时间无操作 定时器还是会触发(如我写的代码3秒后触发下载地址链接)

难点是唤起APP后 又切换回去网页浏览器 定时器还是继续触发从而会跳到下载页面


//监听页面是否被切换到后台
document.addEventListener("visibilitychange", () => { 
    if(document.hidden) {
        clearTimeout(timeout)
    }
    else {
        clearTimeout(timeout)
    }
});

var timeout = ''

//按钮点击事件
$('#open-app-details').click(function (param) { 
    var u = navigator.userAgent, app = navigator.appVersion;
    var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //g
    var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
    var ua = navigator.userAgent.toLowerCase();//获取判断用的对象
    if (ua.match(/MicroMessenger/i) == "micromessenger") {
        //在微信中打开
        alert('点击右上角,选择"在浏览器"中打开')
        return  false
    }
    var webUrl = window.location.host
    if (isAndroid) {
        //这个是安卓操作系统
        window.location.href = '' //跳转APP地址 如weixin://
        timeout = setTimeout(function(){
            $.sDialog({
                skin:"red",
                content:'请先下载APP',
                okBtn:true,
                cancelBtn:true,
                okFn:function() {
                    window.location.href= '' //androidAPP下载地址
                },
            });
        },3000)
        
    }
    if (isIOS) {
        window.location.href = '' //跳转APP地址 如weixin://
        timeout = setTimeout(function(){
            $.sDialog({
                skin:"red",
                content:'请先下载APP',
                okBtn:true,
                cancelBtn:true,
                okFn:function() {
                    window.location.href= '' //iosAPP下载地址
                },
            });
        },3000)
    }

 })

总结:参考了很多资料 都是利用定时器机制 来判断是否跳转了APP 总的来说都是治标不治本

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值