判断浏览器型号(浏览器嗅探)

在看aralejs的sticky组件时,刚好看到判断浏览器型号的方法:window.navigator.userAgent

// 只需判断是否是 IE 和 IE6
ua = (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.

我相信,会有一个公正而深刻的认识来为我们总结的:那时,我们这一代独有的奋斗、思索、烙印和选择才会显露其意义。 ——《北方的河》

博文来源:http://www.cnblogs.com/liaopr

如果您觉得本文的内容对您的学习有所帮助,可以选择打赏我一杯咖啡:D

原文地址:https://www.cnblogs.com/liaopr/p/3314179.html