您的位置:首页 > 其它

如何判定当前浏览器是ie浏览器

2016-07-25 21:18 239 查看
我们都知道ie的标准和w3c的一些标准有些区别,特别是低版本的ie,所以我们经常要判定该浏览器是否为ie浏览器。

方法1:

document.all

if(document.all){
alert("这是ie浏览器");
}


在ie下,document.all可以取出document下的所有子节点,但是该方法只能支持ie10以下的版本(包括ie10)。

当我们在ie11的控制台下输出document时,会发现document.all为undefined



但是在ie11下document还是有all存在,后来发现使用如下方法可以兼容所有的ie浏览器。

if("all" in document){
alert("这是ie浏览器");
}else{
alert("这不是ie浏览器");
}


方法2:

这是一种比较简短的方式,但是只支持ie8(包括ie8)以下的浏览器

if("\v"=="v"){
alert("这是IE浏览器!");
}else{
alert("这不是IE浏览器!");
}


因为在低版本ie中会把”\v”当作是字符v来解析,但是其他浏览器中会把”\v”当作是垂直制表符来解析。

方法3:

这也是一种比较简短的方式,也是只支持ie8(包括ie8)以下的浏览器

if(-[1,]){
alert("这不是IE浏览器!");
}else{
alert("这是IE浏览器!");
}


对于标准游览器,如果数组里面最后一个字符为逗号,JS引擎会自动剔除它。但是ie则不会。

标准浏览器[1,]会返回“1”,但是ie会返回“1,”。然后前面加-,转换为数字类型时,ie会转换为NaN。

方法4:

最后这种方法原理与方法1类似。

我们都知道ie的window下有一个ActiveXObject对象,可以通过这个对象来判断是不是ie浏览器

if(window.ActiveXObject){
alert("这是ie浏览器");
}else{
alert("这不是ie浏览器");
}


但是后来会发现在ie11下还是不支持,如果在ie11输出typeof window.ActiveXObject 发现会undefined;

console.log(typeof window.ActiveXObject);




但是在ie11下还是存在有ActiveXObject对象的,后来发现使用如下方法可以兼容所有的ie浏览器。

if("ActiveXObject" in window){
alert("这是ie浏览器");
}else{
alert("这不是ie浏览器");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  w3c 浏览器 ie