一些非常简短的代码实现判断是否是IE浏览器。这些实现是都是利用了IE的一些BUG实现的,现实代码中并不推荐使用。
示例1
var isIE = 0 /*@cc_on+1@*/;
这是利用了IE独有的条件编译,在其它浏览器中后面的注释会直接过滤掉,但IE中不会,当然如果使用一些代码压缩软件也有可能会把注释去掉。
示例2
var isIE = !-[1,];
在JS中"-"运算符会将其后的字符串转换成数字并取负,若不能转换,则返回NaN。而[1,2,3]数组则会返回数组成员组成的字符串"1,2,3"。这条语句在标准的ECMAScript解释器中将返回其唯一成员"1",并转换成数值-1,但是在IE这里有个BUG,导致返回值为"1, ",无法转换成数值。
示例3
var isIE = !+'\v1';
这依旧是IE的一个BUG,在标准的ECMAScript解释器中,\v会被转义成空白字符,其结果为数值1,而IE中\v不会被转义,就是字符“v“,所以其结果会是一个NaN。
评论(0)