IE浏览器检测的方法

传统一般都是采用user-agent的检测方式,它检测目标浏览器的确切型号,包括浏览器的名称和版本。其实就是一个字符串,用navigator.userAgen或navigator.appName获取。如下:

function isIE(){

return navigator.appName.indexOf("Microsoft Internet Explorer")!=-1 && document.all;

}

function isIE6() {

return navigator.userAgent.split(";")[1].toLowerCase().indexOf("msie 6.0")=="-1"?false:true;

}

function isIE7(){

return navigator.userAgent.split(";")[1].toLowerCase().indexOf("msie 7.0")=="-1"?false:true;

}

function isIE8(){

return navigator.userAgent.split(";")[1].toLowerCase().indexOf("msie 8.0")=="-1"?false:true;

}

function isNN(){

return navigator.userAgent.indexOf("Netscape")!=-1;

}

function isOpera(){

return navigator.appName.indexOf("Opera")!=-1;

}

function isFF(){

return navigator.userAgent.indexOf("Firefox")!=-1;

}

function isChrome(){

return navigator.userAgent.indexOf("Chrome") > -1;

}

目前比较流行的检测方式则是通过“对象/特征”来判断浏览器能力的方式。下面的addEvent代码就是使用了该方式。.addEventListener是w3c dom标准方式,而IE使用自己特有attachEvent。

//添加事件工具函数

function addEvent(el,type,handle){

if(el.addEventListener){//for standard browses

el.addEventListener(type,handle,false);

}else if(el.attachEvent){//for IE

el.attachEvent("on"+event,handle);

}else{//other

el["on"+type]=handle;

}

}

在举几个列子:

1、talbe.cells只有IE/Opera支持。

2、innerText/insertAdjacentHTML除Firefox外,IE6/7/8/Safari/Chrome/Opera都支持。

3、window.external.AddFavorite用来在IE下添加到收藏夹。

4、window.sidebar.addPanel用来在Firefox下添加到收藏夹。

还有一种有趣的检测方式,暂且称为“浏览器缺陷或bug”方式,即某些表现不是浏览器厂商刻意实现的。如下:

var isIE = !+"v1";

var isIE = !-[1,];

var isIE = "v"=="v";

isSafari=/a/.__proto__=='//';

isOpera=!!window.opera;

isIE = "v" == "v" 方式IE9已经修复该bug,不能用此方式判断IE浏览器了(2010-6-29用IE9平台预览第三版测试的)

最经典的莫过于 !-[1,] 的判断方式,仅仅用了6 bytes判定IE浏览器,创世界最短纪录,这组代码利用了数组[1,]的length。

IE浏览器检测代码:

// ----------------------------------------------------------

// A short snippet for detecting versions of IE in JavaScript

// without resorting to user-agent sniffing

// ----------------------------------------------------------

// If you're not in IE (or IE version is less than 5) then:

// ie === undefined

// If you're in IE (>=5) then you can determine which version:

// ie === 7; // IE7

// Thus, to detect IE:

// if (ie) {}

// And to detect the version:

// ie === 6 // IE6

// ie > 7 // IE8, IE9 ...

// ie < 9 // Anything less than IE9

// ----------------------------------------------------------

//UPDATE: Now using Live NodeList idea from @jdalton

var ie = (function() {

var undef,

v = 3,

div = document.createElement('div'),

all = div.getElementsByTagName('i');

while (

div.innerHTML = '<!--[if gt IE ' + (++v) + ']><![endif]-->',

all[0]

);

return v > 4 ? v : undef;

})();

这个代码的意图就是.通过while循环.将条件编译写入到div即页面中,然后直接取注释下的这个元素,直到取不到就退出循环。这样就获得了IE的最终版本,如果不是IE那么就是undefined。

(0)

相关推荐

  • 域名被墙了怎么办,域名被墙查询检测解决方法

    如果我们注册或是购买到的域名被墙了,那么是无法进行解析的,也就是基本上这个域名是没用的,下面我来说下域名被墙了怎么办,域名被墙查询检测解决方法. 操作方法 01 首先很多人在解析域名的时候,发现自己的 ...

  • 清除浏览器cookie 图解火狐浏览器清除Cookie方法

    已经习惯了IE浏览器怎么清除Cookie记住密码,今天忽然发现不知道火狐浏览器在哪里清除记住密码的Cookie了。找了老半天终于怎么知道清除了,发出来分享一下。 火狐浏览器清除Cookie方法/步骤1 ...

  • 2345浏览器怎么免费打电话 2345浏览器免费打电话方法教程详解(适用电脑及手机)

    知名的2345网址导航旗下开发的2345浏览器新增加了免费网络通话功能,只要在电脑或者手机中安装2345浏览器就可以免费打电话。针对不少朋友,还不知道2345浏览器怎么免费打电话,以下脚本之家小编为大 ...

  • 鲁大师屏幕检测怎么用?鲁大师屏幕坏点检测使用方法

    手机使用时间长了难免会出现问题,那么该如何检测屏幕呢?今天小编通过鲁大师的“屏幕检测”功能为大家演示屏幕坏点检测使用方法,希望对大家有所帮助 第一步、进入界面后点击右下角【更多】再点击上方的【屏幕检测 ...

  • 手机360浏览器历史记录删除方法图文详解

    360浏览器历史记录怎么删除?手机360浏览器是一个迷你浏览器,界面简洁,操作起来也不错,流畅操作如行云流水般快意、让用户轻松享受安全稳定的云服务。下面小编告诉大家360浏览器历史记录删除方法吧! 1 ...

  • 浏览器运行太慢?清空手机QQ浏览器历史记录的方法

    QQ浏览器怎么清空历史记录?每次用QQ浏览器看新闻或者进其他网页,退出后自己浏览的记录一直保存在那里,这样多多少少会影响手机的使用。那怎么办呢?现在的小编给大家好带来了QQ浏览器清空历史记录方法。希望 ...

  • 手机QQ浏览器怎么查找网页内容 QQ浏览器页面查找方法图解

    QQ浏览器怎么查找网页内容?上网的时候,在一个较大的网页要找自己需要的内容,一条一条看就太浪费时间了,最好的方法当然是用查找关键字啦,下面,小编就来教大家QQ浏览器查找网页内容方法。 1)打开手机QQ ...

  • 如何彻底优化IE浏览器 六种设置方法轻松优化你的IE浏览器

    IE是计算机网络使用时必备的重要工具软件之一,在互联网应用领域甚至是必不可少的。那么如何彻底优化IE浏览器,六种设置方法就可轻松优化你的IE浏览器,详细请大家仔细阅读本篇文章 临时文件: IE在上网的 ...

  • 手机版360浏览器如何截图 360浏览器截屏方法介绍

    360浏览器如何截屏?今天小编为大家带来一个简单快捷的截屏方法。很多时候我们不需要截全屏的图片,只是指定的区域,那么怎么截屏呢?下面就跟小编一起来看看360浏览器截屏方法。 相关教程:360浏览器怎么 ...