浏览器检测
判断浏览器的型号一般有两种:一是可以通过DOM的userAgent来判断;另一种是通过浏览器的私有属性来判断
通过userAgent来判断
通过查找userAgent返回的字符串中一些特定的字符来判断浏览器类型,可以通过indexOf(),返回值是所查找的字符串在整个字符串中首次出现的位置,没有找到要查的字符串其返回值是-1;indexOf()对大小写敏感,而userAgent方法返回值一般为大写混合,以下是常见浏览器的userAgent值
IE7:mozilla/4.0 (compatible; msie 7.0; windows nt 5.1;
.net clr 2.0.50727; .net clr 3.0.04506.648; .net clr 3.5.21022; ciba)
IE6:mozilla/4.0 (compatible; msie 6.0; windows nt 5.1;
.net clr 2.0.50727; .net clr 3.0.04506.648; .net clr 3.5.21022; ciba)
FF:mozilla/5.0 (windows; u; windows nt 5.1; zh-cn; rv:1.9.0.10)
gecko/2009042316 firefox/3.0.10
Opera:opera/9.64 (windows nt 5.1; u; edition ibis; zh-cn) presto/2.1.1
Safari:mozilla/5.0 (windows; u; windows nt 5.1; zh-cn)
applewebkit/528.16 (khtml, like gecko) version/4.0 safari/528.16
Chrome:mozilla/5.0 (windows; u; windows nt 5.1; en-us) applewebkit/531.3
(khtml, like gecko) chrome/3.0.193.0 safari/531.3
对比上面返回值的差异可以用下面的方法对浏览器进行检查
var ua = navigator.userAgent.toLowerCase();
var _isOpera = ua.indexOf('opera') != -1,
_isChrome = ua.indexOf('chrome') != -1,
_isSafari = !_isChrome && ua.indexOf('safari') != -1,
_isGecko = !_isChrome && !_isSafari && ua.indexOf('gecko') != -1,
_isIE = !_isOpera &&ua.indexOf('msie') != -1,
_isIE6 = ua.indexOf('msie 6') != -1,
_isIE7 = ua.indexOf('msie 7') != -1;
通过浏览器的私有属性来判断
- IE支持创建ActiveX控件,因此ActiveXObject函数也是IE独有的
- Opera提供了专门的浏览器标志,就是window.opera属性
- Safari有一个私有的openDatabase属性
- Chrome和Firefox有一个MessageEvent函数,但没有Firefox的getBoxObjectFor
- Firefox有一个getBoxObjectFor函数用来获取DOM的位置和大小,类似IE的getBoundingClientRect
因此可以大概用一下代码
var ua = navigator.userAgent.toLowerCase();
var _isOpera = window.opera,
_isChrome = window.MessageEvent && !document.getBoxObjectFor,
_isSafari = window.openDatabase,
_isGecko = document.getBoxObjectFor,
_isIE = window.ActiveXObject;
if(_isIE ) alert("ie");
if(_isGecko ) alert("isGecko ");
if(_isChrome ) alert("isChrome ");
if(_isOpera ) alert("isOpera ");
if(_isSafari ) alert("isSafari ");

Give lefter a comment