7

我阅读了一篇关于在 JavaScript 中测试 Internet Explorer的文章,其中指出快速测试是:

var isMSIE = /*@cc_on!@*/0;

if (isMSIE) {
  // do IE-specific things
} else {
  // do non IE-specific things
}

但是其中一条评论显示了另一种方式:(我不得不说,它有效)

if (-[1,]) {
// do non IE-specific things
} else {
// do IE-specific things
}

所以我问:

有什么特别之处-[1,]以至于 IE 无法识别而其他人却能识别它?

ps

发现了另一个快速虚假的把戏

IE='\v'=='v'
4

1 回答 1

5

[1,].toString()在最新版本之前的 IE 中1,,当以算术为前缀时-会输出 falseyNaN而其他浏览器会返回[1,].toString() === 1一个 truthy -1

它是一种可怕的嗅探技术,完全避免它,并且正如其他人评论的那样检测对特定功能的支持。

于 2013-07-03T11:49:57.707 回答