概述
@js 检测移动设备APP应用安装打开应用,未安装跳转到下载页面
直接上代码!!
function _openAppUrl($appUrl,$downLoadUrl){
var ua = navigator.userAgent.toLocaleLowerCase(),
openBrowser = null,
deviceVersion = 0,
matchVersion = null,
openAppType = "",
downLoadUrl = $downLoadUrl;
//如果是在微信内部点击的时候
if(ua.indexOf("micromessenger") != -1 ){
_openAppUrl = function(){
alert("请使用浏览器打开!");
}
}else{
//在浏览器打开,判断是在移动端还是在PC端
if(matchVersion = navigator.userAgent.match(/OSs*(d+)/)){
//赋值,并且判断
//IOS设备的浏览器
deviceVersion = matchVersion[1] || 0;
if(deviceVersion - 9 >= 0){
openAppType = "newType";
}
}else if(matchVersion = navigator.userAgent.match(/Androids*(d+)/)){
//Android的设备
deviceVersion = matchVersion[1] || 0;
if(deviceVersion - 5 >= 0){
openAppType = "newType";
}
}else{
//PC端的设备
openAppType = "pc";
}
if(openAppType == "pc"){
_openAppUrl = function(){
alert("请使用浏览器打开!");
}
}else if(openAppType == "newType"){
//使用新的方法,尝试打开APP
//IOS>9,Android>5的版本
var timeout, t = 1000, hasApp = true;
var t1 = Date.now();
var ifr = document.createElement("iframe");
ifr.setAttribute('src', appUrl);
ifr.setAttribute('style', 'display:none');
document.body.appendChild(ifr);
timeout = setTimeout(function () {
var t2 = Date.now();
if (!t1 || t2 - t1 < t + 100) {
hasApp = false;
}
}, t);
setTimeout(function () {
if (hasApp) {
location.href = appUrl;
} else {
location.href = downLoadUrl;
}
document.body.removeChild(ifr);
}, 2000)
}else{
//使用计算时差的方案打开APP
var checkOpen = function (cb){
var _clickTime = +(new Date()),
_count = 0,
intHandle = 0;
//启动间隔20ms运行的定时器,并检测累计消耗时间是否超过3000ms,超过则结束
intHandle = setInterval(function(){
_count++;
var elsTime = +(new Date()) - _clickTime;
if (_count>=100 || elsTime > 3000 ) {
clearInterval(intHandle);
//计算结束,根据不同,做不同的跳转处理,0表示已经跳转APP成功了
if ( elsTime > 3000 || document.hidden || document.webkitHidden) {
cb(0);
} else {
cb(1);
}
}
}, 20);
}
_openAppUrl = function(url){
var ifr = document.createElement('iframe');
ifr.src = url;
ifr.style.display = 'none';
checkOpen(function(opened){
if(opened === 1){
location.href = downLoadUrl;
}
});
document.body.appendChild(ifr);
setTimeout(function() {
document.body.removeChild(ifr);
}, 2000);
}
}
}
}
//执行方法
//$appUrl=>APP_SCHEME_URL(与APP约定的一个协议URL)
//$downLoadUrl =>下载地址,我这里直接跳公共下载页面,
//下载页面里判断了下载ios还是安卓,这里就不一一赘述
_openAppUrl($appUrl,$downLoadUrl);
希望以上代码能帮到在茫茫人海寻找方法的里,亲测有效,注意:微信内打开网址和qq等第三方app打开的网址执行该方法是无效,需要用常规的手机自带的浏览器等常用浏览器才有效
最后
以上就是小巧鲜花为你收集整理的js 检测移动设备APP应用安装打开应用,未安装跳转到下载页面直接上代码!!的全部内容,希望文章能够帮你解决js 检测移动设备APP应用安装打开应用,未安装跳转到下载页面直接上代码!!所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复