本文主要详细介绍一下微信内置浏览器打开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;
      }
}