8.4.1 判断微信浏览器

下面我们通过一个示例程序获取客户端浏览器的User Agent,代码如下:

  1. 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2.  
  3. 2 <html>
  4. 3 <head>
  5. 4  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. 5  <title>获取浏览器User Agent</title>
  7. 6  <script type="text/javascript">
  8. 7  // 输出到页面
  9. 8  document.write(navigator.userAgent);
  10. 9  </script>
  11. 10 </head>
  12. 11 <body>
  13. 12 </body>
  14. 13 </html>

这是一段完整的HTML页面代码,主要是通过JavaScript获取浏览器的User Agent。重点在第8行,首先访问navigator对象的userAgent属性获取User Agent信息,再调用document对象的write()方法将获取到的信息输出到页面上。我们将上面这个HTML页面部署到公网服务器上,然后在微信上打开该页面的链接,就能在页面上看到微信浏览器的User Agent。笔者使用了3部手机iPhone4S、Motorola ME722和Lenovo A820t进行测试,依次得到如下结果:

  1. Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML,like Gecko) Mobile/11A501 MicroMessenger/5.0.1
  2.  
  3. Mozilla/5.0 (Linux; U; Android 2.3.4; zh-cn; ME722 Build/4.5.3-109_MS2-5) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MicroMessenger/5.0.350
  4.  
  5. Mozilla/5.0 (Linux; U; Android 4.1.2; zh-cn; Lenovo A820t Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 MicroMessenger/5.0.2.352

根据测试结果不难发现,微信浏览器的标识为MicroMessenger,这就意味着能够通过判断User Agent中是否包含MicroMessenger来确定是不是微信浏览器。

使用JavaScript判断微信浏览器的方法如下:

  1. // 判断是不是微信浏览器
  2. function isMicroMessenger(){
  3. var result = false;
  4. var ua = navigator.userAgent;
  5. if(ua.indexOf('MicroMessenger') > -1)
  6. result = true;
  7.  
  8. return result;
  9. }

使用Java判断微信浏览器的方法如下:

  1. /**
  2. * 判断是不是微信浏览器
  3. *
  4. * @param request HttpServletRequest对象
  5. * @return true-是 false-不是
  6. */
  7. public static boolean isMicroMessenger(HttpServletRequest request) {
  8. boolean result = false;
  9. String userAgent = request.getHeader("User-Agent");
  10. if (userAgent.contains("MicroMessenger"))
  11. result = true;
  12. return result;
  13. }