客户端开发:若安装的app,则在app中打开;若未装app,则跳

2017-06-14  本文已影响30人  艾石溪

代码实现,先记录一下,之后再进行梳理。

1: 判断终端是安卓系统的浏览器或者ios系统的浏览器或者是微信中

var userAgent = navigator.userAgent;
var isIos = !!userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
var isAndroid = userAgent.indexOf('Android') > -1 || userAgent.indexOf('Adr') > -1; //android终端
var isWeiXin = (function() {
  var ua = navigator.userAgent.toLowerCase();
  if(ua.match(/MicroMessenger/i) == 'micromessenger') {
     return true;
  } else {
    return false;
  }
})();

2: 实现若是手机上有app,则跳转到app去拉取信息,若不存在app,则跳转到app下载页面。

function linkToApp(schemeUrl) {
  var startTime = Date.now();  //获取当前时间
  var ifr = document.createElement('iframe');
  ifr.src = schemeUrl;
  ifr.style.display = 'none';
  document.body.appendChild(ifr);
  //使用iframe发送一个请求,创建完,发送请求结束后,可以立即结束,所以,可以0秒钟进行删除。
  window.setTimeout(function(){
    document.body.removeChild(ifr);
  }, 0);

  var _count = 0, intHandle, opened = false;
  //使用setInterval,每40毫秒执行一次,当执行100次时,若没有app,正常执行完需要4100-4300ms之间;
  //但是若打开app时,setInterval会停止执行,即使在app中停留1-2秒,返回时也会执行过很多秒,所以就不会再执行打开app的操作。
  //若使用setTimeout(),则setTimeout函数在打开app时,也是一直在执行的。
  intHandle = setInterval(function () {
    _count++;
    var elsTime = Date.now() - startTime;
    if (_count >= 100) {
      if (elsTime > 4500 || document.hidden || document.webkitHidden) {
        return;
      } else {
        window.location = 'http://a.app.qq.com/o/simple.jsp?pkgname=com.sohu.vr.daxiang.video';
      }
    }
  }, 40);
}
上一篇 下一篇

猜你喜欢

热点阅读