这几天一直在与微信内置的浏览器打交道,也总结出一些如何判断当前浏览器环境是否为微信浏览器的小经验(其实代码网上一搜一大把),今天记录一下。
判断网页是否在微信浏览器中打,一般都是通过请求头信息中的HTTP_USER_AGENT来判断,如果是来自微信浏览器的请求,请求头信息中就会包含‘MicroMessenger’字段,当然也有微信当前的版本号。
以下是来自微信浏览器的 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; }); }
以上三段JS代码,都可以判断出当前出网页当前的浏览器环境是否为微信内置浏览器,所以用哪段代码,效果都是一样的。
本文判断当前网页是否在微信浏览器中打开到此结束。每当我看天的时候我就不喜欢再说话每当我说话的时候我却不敢再看天。小编再次感谢大家对我们的支持!