上週接到個需求,需求是這樣的:用戶掃一掃二維碼會產生一個連接,該連接會向後端發送個請求,返回一個 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 放到服務器上,而後生成個二維碼掃一掃。後端