8.4.1 判断微信浏览器
下面我们通过一个示例程序获取客户端浏览器的User Agent,代码如下:
- 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- 2 <html>
- 3 <head>
- 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- 5 <title>获取浏览器User Agent</title>
- 6 <script type="text/javascript">
- 7 // 输出到页面
- 8 document.write(navigator.userAgent);
- 9 </script>
- 10 </head>
- 11 <body>
- 12 </body>
- 13 </html>
这是一段完整的HTML页面代码,主要是通过JavaScript获取浏览器的User Agent。重点在第8行,首先访问navigator对象的userAgent属性获取User Agent信息,再调用document对象的write()方法将获取到的信息输出到页面上。我们将上面这个HTML页面部署到公网服务器上,然后在微信上打开该页面的链接,就能在页面上看到微信浏览器的User Agent。笔者使用了3部手机iPhone4S、Motorola ME722和Lenovo A820t进行测试,依次得到如下结果:
- 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
- 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
- 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判断微信浏览器的方法如下:
- // 判断是不是微信浏览器
- function isMicroMessenger(){
- var result = false;
- var ua = navigator.userAgent;
- if(ua.indexOf('MicroMessenger') > -1)
- result = true;
- return result;
- }
使用Java判断微信浏览器的方法如下:
- /**
- * 判断是不是微信浏览器
- *
- * @param request HttpServletRequest对象
- * @return true-是 false-不是
- */
- public static boolean isMicroMessenger(HttpServletRequest request) {
- boolean result = false;
- String userAgent = request.getHeader("User-Agent");
- if (userAgent.contains("MicroMessenger"))
- result = true;
- return result;
- }