這幾天一直在與微信內置的瀏覽器打交道,也總結出一些如何判斷當前瀏覽器環境是否為微信瀏覽器的小經驗(其實代碼網上一搜一大把),今天記錄一下。

判斷網頁是否在微信瀏覽器中打,一般都是通過請求頭信息中的HTTP_USER_AGENT來判斷,如果是來自微信瀏覽器的請求,請求頭信息中就會包含‘MicroMessenger’字段,當然也有微信當前的版本號。

国产视频app以下是來自微信瀏覽器的 userAgent 信息

//Android
"HTTP_USER_AGENT": "Mozilla/5.0 (Linux; U; Android 4.1; zh-cn; Galaxy Nexus Build/Wind-Galaxy Nexus-V1.2) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 MicroMessenger/5.0.1.352",
//Windows Phone
"HTTP_USER_AGENT": "Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Nokia 920T)",
//iPhone;
"HTTP_USER_AGENT": "Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B329 MicroMessenger/5.0.1",

上面三段userAgent信息中,除了 Windows Phone 手機的userAgent信息中沒有出現'MicroMessenger'字段外,Android手機以及iPhone手機中都出現了,并且還帶有微信的版本號。

判斷微信瀏覽器

PHP判斷當前頁面是否在微信瀏覽器中打開

代碼1:

function isWxClient(){
    $user_agent = $_SERVER['HTTP_USER_AGENT'];
    if (strpos($user_agent, 'MicroMessenger') === false) {
        return false;
    }else{
        return true;
    }
}

代碼2:

function isWxClient(){
    return strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false;
}

代碼3:判斷微信瀏覽器的版本號

function WxClient_Edition(){
    $user_agent = $_SERVER['HTTP_USER_AGENT'];
    preg_match('/.*?(MicroMessenger\/([0-9.]+))\s*/', $user_agent, $matches);
    return $matches[2];
}

注意:有些微信的支付功能,在低版本的微信上是無法實現的,比如JSAPI支付等。所以我們要得到當前用戶所使用的微信版本號,以便來做一些兼容性的措施。

js判斷當前頁面是否在微信瀏覽器中打開

代碼1:

var ua = navigator.userAgent.toLowerCase();
var isWeixin = ua.indexOf('micromessenger') != -1;
if (isWeixin) {
    return true;
}else{
    return false;
}

代碼2:

function is_weixn(){
    var ua = navigator.userAgent.toLowerCase();
    if(ua.match(/MicroMessenger/i)=="micromessenger") {
        return true;
    } else {
        return false;
    }
}

代碼3:

var is_weixin = (function(){return navigator.userAgent.toLowerCase().indexOf('micromessenger') !== -1})();
if(is_weixin){
    $(function(){
        return true;
    });
}else{
    $(function(){
        return false;
    });
}

国产视频app以上三段JS代碼,都可以判斷出當前出網頁當前的瀏覽器環境是否為微信內置瀏覽器,所以用哪段代碼,效果都是一樣的。