我找到下面的代码,但我无法理解。
if (!-[1, ] && !window.XMLHttpRequest) {
document.execCommand("BackgroundImageCache", false, true);
}
if(!-[1,])
是什么意思?感谢
答案 0 :(得分:6)
检测旧的Internet Explorer是一个黑客攻击。现代浏览器中-[1,]
为-1
(因此false
!
},但旧IE中NaN
(true
否定)。返回正确结果的第一个版本是IE9。
答案 1 :(得分:4)
确切的代码永远不会产生除 false
以外的任何内容,因此输入时是无意义的。我假设这是渲染输出,并且取决于某些服务器端变量,它有时可能会有所不同。
看到它使用window.XMLHttpRequest
,我意识到它也可能是一些糟糕的浏览器检查形式。 [1,]
会创建一个数组,但尾随的逗号会在Chrome和Internet Explorer中对数组进行不同的处理。 Chrome会将此识别为仅包含一个数字的数组,可以隐式转换为数字,而IE会将其视为包含两个项目的数组,这些数据无法转换为数字。
-[1,0]
将在所有浏览器中产生NaN
。 -[1]
会在所有浏览器中产生-1
。因此-[1,]
将在IE中产生NaN
(因此执行代码),在其他浏览器中产生-1
(而不是执行代码)。
这是一个可怕的黑客。不要使用它。
如果您想知道window.XMLHttpRequest
是否有效,请专门测试,而不是其他任何内容。
答案 2 :(得分:0)
这是特别糟糕的代码:
-[1, ]
结果为数字-1。
!-[1, ]
永远都是假的。
由于[]意味着一个数组,这很糟糕,因为如果你在该数组中有多个值,-
会给你一个NaN。