上周接到个需求,需求是这样的:用户扫一扫二维码会产生一个连接,该连接会向后端发送个请求,返回一个 apk 的下载地址,用户点击下载按钮能够下载此 apk。而后就发生了问题,通过测试,发现用微信扫一扫打开的页面点击下载按钮下载不了 apk,后百度之,原来是微信内置浏览器屏蔽了下载连接,后面和需求方沟通,需求改成若是用户是用微信内置浏览器打开的,则提示用户换一个浏览器打开页 面,不然下载不了 apk。那么该如何判断用户是不是用微信浏览器呢?javascript
咱们知道 js 能够经过 window.navigator.userAgent 来获取浏览器的相关信息,好比:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36,那么咱们也能够经过该方法来获取微信内置浏览器的相关信息:Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11d201 MicroMessenger/5.3。根据关键字 MicroMessenger 来判断是不是微信内置的浏览器。判断函数以下:html
function isWeiXin(){ var ua = window.navigator.userAgent.toLowerCase(); if(ua.match(/MicroMessenger/i) == 'micromessenger'){ return true; }else{ return false; } }
demo:java
<!DOCTYPE HTML> <html lang="en"> <head> <meta charset="utf-8"/> <title>判断是不是微信内置浏览器</title> </head> <body> <h1>若是用微信浏览器打开能够看到下面的文字</h1> <p></p> </body> </html> <script type="text/javascript"> window.onload = function(){ if(isWeiXin()){ var p = document.getElementsByTagName('p'); p[0].innerHTML = window.navigator.userAgent; } } function isWeiXin(){ var ua = window.navigator.userAgent.toLowerCase(); if(ua.match(/MicroMessenger/i) == 'micromessenger'){ return true; }else{ return false; } } </script>
说明:能够将上面的 demo 放到服务器上,而后生成个二维码扫一扫。后端