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

在看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(/^apple\s+/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.

转载于:https://www.cnblogs.com/liaopr/p/3314179.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值