对于前端工程师来说,IE浏览器肯定是最头疼的,各种兼容,一个事件的添加都不一样,如何快速简单的判断是否是IE浏览器,是一个值得思考的问题,闲来无事,判断下IE。
在IE中数组的处理也是不一样的,
var arr = [1,];
在IE中,这是一个两个元素的数组,第一个元素为1;第二个元素为‘’,即空字符串;这个arr.length自然为2;
而在标准的浏览器,即除IE之外的浏览器中,这是一个包含一个元素的数组,该元素的值为1;
那么,咱们判断是否是IE浏览器就可以在这做文章了:
分别在IE和标准浏览器中运行-arr,运行结果是:
IE中是NaN,因为在IE中是两个元素,arr.toString()的运行结果是‘1,’,然后转为数字的时候,就是个NaN,即运行Number(arr)的结果是NaN;
在标准浏览器中,arr是一个元素,arr.toString()的运行结果是‘1’,转为数字的结果是1,即运行Number(arr)的结果是1;
所以咱们可以根据这个NaN来判断是否是IE浏览器,如何将这个arr转换为数字呢,这就是一个问题了,
正好,正负号可以解决这个问题,运行+arr:
IE:NaN;标准浏览器:1
接下来,已经看到了一点眉目了,
NaN转化为boolean类型是false;而1转化为boolean类型是ture;
判断IE浏览器的方法就是:!+arr;IE下这个运行结果是ture;标准浏览器下运行结果是false,
直接罗代码:
if(!+[1,]){
//do something ie
}else{
//do something 标准浏览器
}