本文主要详细介绍一下微信内置浏览器打开apk应用下载链接被拦截解决方法,很多朋友的APP推广链接需要在微信中进行网页宣传、传播、下载等等,但是各位朋友一定发现了微信中是屏蔽掉了APP的下载链接的,微信作为一个最大的社交平台,为了自身的利益,屏蔽掉了所有APK的下载链接,腾讯想主推应用宝做应用分发这块市场,所以上传应用宝是肯定不会被微信屏蔽的,现在介绍下不上传应用宝该如何处理。
1.直接上代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
</head>
<body>
<div id="h5shareIos" style="display: none;width:100%;position: fixed;top:0;bottom:0;left:0;right:0;z-index:10;">
<img style="width:100%;" src="http://image.jinchengcom.cn/blog/28257dd53d204df4b6cfd4f9c33b49a.png"/>
</div>
<div id="h5shareAndroid" style="display: none;width:100%;position: fixed;top:0;bottom:0;left:0;right:0;z-index:10;">
<img style="width:100%;" src="http://image.jinchengcom.cn/blog/28257dd53d204df4b6cfd4f9c33b49a.png"/>
</div>
<script type="text/javascript">
//获取浏览器的user-agent信息
var u = navigator.userAgent;
//判断是否是android终端
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1;
//判断是否是ios终端
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
//isWeibo: /WeiBo/gi.test(UA)
//isQQ: /QQ/gi.test(u)
//判断是否是微信浏览器
if(/MicroMessenger/gi.test(u)) {
//在微信界面引导用户打开外部浏览器
if(isAndroid){
document.getElementById("h5shareAndroid").style.display="block";
}else if(isiOS){
document.getElementById("h5shareIos").style.display="block";
}
}else{
if(isiOS){
window.location.href = "alipay://"; //填写IOS的apk下载地址
}else{
window.location.href = "alipay://"; //填写Android的apk下载地址
}
}
</script>
</body>
</html>
2.详细讲解
2.1javascript的navigator对象
//常用
var appVersion=navigator.appVersion; //返回浏览器版本号
var appName=navigator.appName; //返回浏览器正式名称 均为Netscape
var language=navigator.language; //返回浏览器的首选语言
var platform=navigator.platform; //所在平台,返回win32
var userAgent=navigator.userAgent; //判断浏览器类型
//不常用
var appCodeName= window.navigator.appCodeName;//返回与浏览器相关的内部代码名 都为Mozilla
var cookieEnabled=navigator.cookieEnabled;//返回浏览器是否启用cookie,true和false
var geolocation=navigator.geolocation;//返回地理定位信息(h5)
var javaEnabled=navigator.javaEnabled();//检测当前浏览器是否支持 Java,从而知道浏览器是否能显示 Java 小程序(IE,chrome返回true,firefox返回false)
var mimeTypes= navigator.mimeTypes;//返回浏览器支持的Mime类型
var msManipulationViewsEnabled= navigator.msManipulationViewsEnabled;//仅支持IE,true
var msMaxTouchPoints=navigator.msMaxTouchPoints;//字面意思是最大的触摸点,IE为0,其他不支持
var msPointerEnabled=navigator.msPointerEnabled;//IE为true,其他不支持
var onLine=navigator.onLine;//是否连接互联网,均返回true(未断网)
var plugins=navigator.plugins;//返回浏览器插件集合
var preference=navigator.preference;//允许一个已标识的脚本获取并设置特定的 Navigator 参数
var product= navigator.product;//浏览器产品名,返回gecko
var systemLanguage=navigator.systemLanguage;//获取系统语言,IE支持,返回zh-cn
var userLanguage=navigator.userLanguage;//返回操作系统的自然语言设置,IE支持,返回zh-cn
//方法
var msLaunchUri=navigator.msLaunchUri;//回调函数,未研究
var taintEnabled=navigator.taintEnabled;//回调函数
var hasOwnProperty=navigator.hasOwnProperty;//意思是是否支持属性,用法如下
var s=document.hasOwnProperty("ontouchstart");//电脑返回false,手机为true
2.2navigator.userAgent
//判断用户终端
var browser = {
versions: function() {
var u = navigator.userAgent,
app = navigator.appVersion;
return { //移动终端浏览器版本信息
trident: u.indexOf('Trident') > -1, //IE内核
presto: u.indexOf('Presto') > -1, //opera内核
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, //是否为iPhone或者QQHD浏览器
iPad: u.indexOf('iPad') > -1, //是否iPad
webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
};
}(),
language: (navigator.browserLanguage || navigator.language).toLowerCase()
}
应用场景:
//js判断当前环境是否是微信环境
function is_weixin(){
var ua = navigator.userAgent.toLowerCase(); //toLowerCase()转换为小写
if(ua.match(/MicroMessenger/i)=="micromessenger") {
return true;
} else {
return false;
}
}