判断终端的类型、安卓、ios、微信、qq
function GetMobelType() { var browser = { versions: function() { var u = window.navigator.userAgent; return { trident: u.indexOf('Trident') > -1, //IE内核 presto: u.indexOf('Presto') > -1, //opera内核 Alipay: u.indexOf('Alipay') > -1, //支付宝 webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核 gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核 mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端 ios: !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端 android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器 iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否为iPhone或者安卓QQ浏览器 //iPhone: u.match(/iphone|ipod|ipad/),// iPad: u.indexOf('iPad') > -1, //是否为iPad webApp: u.indexOf('Safari') == -1, //是否为web应用程序,没有头部与底部 weixin: u.indexOf('MicroMessenger') > -1, //是否为微信浏览器 qq: u.match(/sQQ/i) == " qq", //是否QQ Safari: u.indexOf('Safari') > -1, ///Safari浏览器, }; }() }; return browser.versions; }
截取浏览器地址拼接参数
//截取地址 function GetRequest(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); var r = window.location.search.substr(1).match(reg); if(r != null) { return unescape(r[2]); } else { return null; } }
跳转到app市场,以微信的为例
//跳转到app市场 var appstore, ua = navigator.userAgent; if(ua.match(/Android/i)) { appstore = 'market://search?q=com.singtel.travelbuddy.android'; } if(ua.match(/iphone|ipod|ipad/)) { appstore = "https://itunes.apple.com/cn/app/wei-xin/id414478124?mt=8&ign-mpt=uo%3D4"; } function applink(fail) { return function() { var clickedAt = +new Date; setTimeout(function() { // To avoid failing on return to MobileSafari, ensure freshness! if(+new Date - clickedAt < 2000) { window.location = fail; } }, 500); }; } $('.footer')[0].onclick = applink(appstore); //
在h5页面跳转打开新的app,进行判断(目前还有点小问题,如果有app会打开,再回来这个界面会展示下载的界面)
function jump(myurl) { 与上面判断ios的方法结合 if(GetMobelType.weixin) { alert("是微信啊");// 水土不服就服微信 微信比较牛 第三方app必须在应用宝发布,且开通‘微下载’服务 } else { if(GetMobelType.android) { var ifr = document.createElement('iframe'); ifr.src = myurl; ifr.style.display = 'none'; document.body.appendChild(ifr); //window.location.href = "你要打开的app协议,安卓提供"; window.setTimeout(function() { document.body.removeChild(ifr); window.location.href = "下载app的地址"; }, 3000); } if(GetMobelType.ios || GetMobelType.iPhone || GetMobelType.iPad) { alert(222); var ifr = document.createElement("iframe"); ifr.src = "打开app的协议"; /***打开app的协议,有ios同事提供***/ ifr.style.display = "none"; document.body.appendChild(ifr); window.setTimeout(function() { document.body.removeChild(ifr); window.location.href = "下载地址"; /***下载app的地址***/ }, 2000) }; } }
处理iframe引入微信的文章防盗链的问题 (这个在微信浏览器打开的时候,会有卡死的现象)
$.ajaxPrefilter(function(options) { if (options.crossDomain && jQuery.support.cors) { var http = (window.location.protocol === 'http:' ? 'http:' : 'https:'); options.url = http + '//cors-anywhere.herokuapp.com/' + options.url; } }); var share_link = that.list.outsideUrl; console.log(share_link) //微信文章地址 $.get( share_link, function(response) { // console.log("> ", response); var html = response; html = html.replace(/data-src/g, "src"); var html_src = 'data:text/html;charset=utf-8,' + html; that.list.outsideUrl = html_src; });
ios存在唤起的时候出现原生弹窗的问题,现在接入了第三方,已解决