代码实现,先记录一下,之后再进行梳理。
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);
}