在看aralejs的sticky组件时,刚好看到判断浏览器型号的方法:window.navigator.userAgent
// 只需判断是否是 IE 和 IE6ua = (window.navigator.userAgent || "").toLowerCase(),isIE = ua.indexOf("msie") !== -1,isIE6 = ua.indexOf("msie 6") !== -1;
- chrome: "mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/29.0.1547.66 safari/537.36"
- FireFox: "mozilla/5.0 (windows nt 6.1; wow64; rv:23.0) gecko/20100101 firefox/23.0"
-
Opera: "mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/29.0.1547.57 safari/537.36 opr/16.0.1196.73"
-
IE8: "mozilla/4.0 (compatible; msie 8.0; windows nt.0; windows nt 6.1; wow64; trident/4.0; slcc2; .net clr 2.0.50727; .net clr 3.5.30729; .net clr 3.0.30729; media center pc 6.0; .net4.0c; .net4.0e)"
-
IE7:"mozilla/4.0 (compatible; msie 7.0; windows nt 6.1; wow64; slcc2; .net clr 2.0.50727; .net clr 3.5.30729; .net clr 3.0.30729; media center pc 6.0; .net4.0c; .net4.0e)"
因此可以利用这一特性,来简单判断浏览器型号和版本:
function browser (){ var ua=window.navigator.userAgent, ret=""; if(/Firefox/g.test(ua)){ ua=ua.split(" "); ret="Firefox|"+ua[ua.length-1].split("/")[1]; }else if(/MSIE/g.test(ua)){ ua=ua.split(";"); ret="IE|"+ua[1].split(" ")[2]; }else if(/Opera/g.test(ua)){ ua=ua.split(" "); ret="Opera|"+ua[ua.length-1].split("/")[1]; }else if(/Chrome/g.test(ua)){ ua=ua.split(" "); ret="Chrome|"+ua[ua.length-2].split("/")[1]; }else if(/^apples+/i.test(navigator.vendor)){ ua=ua.split(" "); ret="Safair|"+ua[ua.length-2].split("/")[1]; }else{ ret="未知浏览器"; } return ret.split("|"); } //调用函数,返回一个数组,r[0]是浏览器名称,r[1]是版本号 var r=browser(); console.log(r);
可以很好利用正则、数组的spilt来实现,代码引用自 http://www.muzilei.com/archives/142
但应该注意的是,MOZILLA开发者网络给出了这么一段描述:
附注
通过检测userAgent的值来判断浏览器类型是不可靠的,也是不推荐的.因为用户可以修改userAgent的值.比如:
- Firefox中,你可以通过在
about:config页面添加并修改
general.useragent.override
选项的值来覆盖默认的用户代理字符串
.一些Firefox扩展也可以用其他方式修改这个值,但它们通常只会修改发送到服务器的User-Agent请求头的值,而不会影响JavaScript代码中获取到的window.navigator.userAgent
属性的值.- Opera 6+ 中允许用户通过菜单选择不同的
用户代理字符串
.- Microsoft Internet Explorer使用注册表来配置自己的用户代理字符串.
- Safari和iCab也允许用户修改其用户代理字符串,来将自己伪装成Internet Explorer或Netscape.