js判斷是否微信客戶端


上周接到個需求,需求是這樣的:用戶掃一掃二維碼會產生一個鏈接,該鏈接會向后端發送個請求,返回一個 apk 的下載地址,用戶點擊下載按鈕可以下載此 apk。然后就發生了問題,經過測試,發現用微信掃一掃打開的頁面點擊下載按鈕下載不了 apk,后百度之,原來是微信內置瀏覽器屏蔽了下載鏈接,后面和需求方溝通,需求改為如果用戶是用微信內置瀏覽器打開的,則提示用戶換一個瀏覽器打開頁面,否則下載不了 apk。那么該如何判斷用戶是否是用微信瀏覽器呢?

我們知道 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 來判斷是否是微信內置的瀏覽器。判斷函數如下:

復制代碼
function isWeiXin(){
    var ua = window.navigator.userAgent.toLowerCase();
    if(ua.match(/MicroMessenger/i) == 'micromessenger'){
        return true;
    }else{
        return false;
    }
}
復制代碼

demo:

復制代碼
<!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 放到服務器上,然后生成個二維碼掃一掃。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM