2012-07-27 19 views

Respuesta

6

Es un truco para detectar el viejo Internet Explorer. -[1,] es -1 en navegadores modernos (entonces false con !) pero NaN en IE viejo (true negado). La primera versión para devolver el resultado correcto es IE9.

+0

De hecho, ['document.execCommand (" BackgroundImageCache ", falso, verdadero)'] (https://encrypted.google.com/search?q=BackgroundImageCache) parece usarse ampliamente como un hack de compatibilidad de IE. – apsillers

+0

Para mí, '! - [1,]' produce 'false' en cromo pero' verdadero' incluso en IE9. –

+0

@DavidHedlund Supongo que tiene algún modo de compatibilidad o renderiza la página en modo peculiar. IE9 tiene una buena compatibilidad con Ecmascript y debería (y lo hace para mí) devolver el mismo resultado que Chrome. – duri

4

Ese código exacto nunca arrojará nada que no sea false, por lo que no tiene sentido, como se ha introducido. Supongo que esto se representa como salida y que, dependiendo de alguna variable del servidor, a veces puede ser algo diferente.

Viendo como se utiliza window.XMLHttpRequest, me di cuenta de que también podría ser algún tipo de comprobación pobres navegador. [1,] crea una matriz, pero la coma final hará que la matriz se trate de manera diferente en Chrome e Internet Explorer. Chrome reconocerá esto como una matriz de un solo número, que se podría convertir implícitamente en un número, mientras que IE lo considerará como una matriz que contiene dos elementos, que no se pueden convertir a un número.

-[1,0] dará NaN en todos los navegadores. -[1] dará -1 en todos los navegadores. Por lo tanto, -[1,] dará NaN en IE (y por lo tanto ejecutará el código), y -1 en otros navegadores (y no ejecutará el código).

Este es un truco terrible. No lo uses

Si desea saber si window.XMLHttpRequest funcionará, pruébelo específicamente, y no por otra cosa.

+0

Ya veo. Gracias. Soy nuevo para este truco. – acjialiren

0

Esto es particularmente malo código:

-[1, ] resultados al número -1.

!-[1, ] siempre sería falso.

Dado que [] implica una matriz, esto es malo, porque si tuviera más de un valor en esa matriz, el - le daría un NaN.

Cuestiones relacionadas