2013-07-03 9 views
7

ich einen Artikel über Test for Internet Explorer in JavaScript gelesen, die besagt, dass ein Schnelltest ist:Quick-Falsy-truthy Art der Überprüfung IE oder nicht?

var isMSIE = /*@[email protected]*/0; 

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

Aber einer der comments eine andere Art und Weise zeigte: (und ich muss sagen, es funktioniert)

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

Und so frage ich:

Was ist so speziell mit -[1,], dass IE es nicht erkennt, während andere tun?

p.s.

fand eine anderen schnellen falsy-truthy Trick

IE='\v'=='v' 
+10

Sie sollten Browser-Sniffing nach Möglichkeit vermeiden und stattdessen die Funktionserkennung bevorzugen. –

+3

Vielleicht solltest du den Fragetitel mehr auf den '- [1,]' -Teil konzentrieren, der ziemlich interessant scheint. – lifetimes

+1

@AndrewMarshall Es gibt einige Szenarien, in denen du mit speziellen Hacks klarkommen musst. Zum Beispiel: Es gibt ein Label, das "uploadfile" sagt und das Label sollte einen FileUploader öffnen (versteckt), als ob Sie ihn gedrückt hätten. jetzt - ein Lbael mit FOR Attribut wird die Arbeit machen. aber es verhält sich anders in Chrom vs Ie. und so muss ich erkennen. Es gibt andere Alternativen, ich weiß, aber immer noch meine Frage bleibt. –

Antwort

5

[1,].toString() in IE vor den aktuellen Versionen 1, war die, wenn sie mit - Falsey NaN während anderem Browser [1,].toString() === 1 würde ausgegeben würde Arithmetik Präfix für ein truthy -1 zurückzukehren.

Es ist eine schreckliche Schnüffeltechnik, vermeiden Sie es vollständig und wie andere kommentiert erkennen Unterstützung für bestimmte Funktionen.

Verwandte Themen