IE ブラウザを決定する世界最短の Javascript メソッドがロシアから誕生しました。さまざまなバージョンの IE およびその他の現在一般的なブラウザーでテストされていますが、Microsoft は IE ベースのバグを認識していましたが、それらを修正したことはありません。 コードをコピー コードは次のとおりです: <br>var ie = !-[1,]; <br>alert(ie); <br><br> </div>上記のコードの実行結果: IE、その他の標準 ブラウザは false を返します。 !-[1,]、わずか 6 バイトです! <br>しかし、逆に判断すると、標準ブラウザが true を返し、IE が false を返す場合は、1 バイト短縮できます。 <br><br><div class="codetitle"><span><a style="CURSOR: pointer" data="71210" class="copybut" id="copybut71210" onclick="doCopy('code71210')">コードをコピー<u></u></a> コードは次のとおりです:</span></div> <div class="codebody" id="code71210"><script type='text/javascript '> <br>notIe = -[1,]; <br>if(-[1,]){ <br>// 標準ブラウザコード<br>}else{ <br>// IE のみのコード<br> } <br> これを読んで、これらがどのように機能するか知りたいですか?以下を読み続けてください。 このバグの理由は、IE が空の配列要素を配列要素の総数に追加するためです。 [1,]. 長さの標準ブラウザは 1 を返します (標準 ECMAscript に基づいて、配列の末尾のカンマ「,」は無視されます。これは列内での表示や自動生成などを容易にするためです)。 、しかしIEは2を返します。この配列を印刷すると、IE は 2 つの要素である「1, 」を返しますが、他の標準ブラウザは「1」を返します。 これは、IE や FF で次のコードを実行するなどして簡単に確認できます: コードをコピーします コードは次のとおりです。 <br>alert([,]==','); <br>//これは 8 文字です。 IE <br>< /script> <br><br> </div>[1,] 実際、ブラウザの操作は toString() で文字列に変換し、-[1,] で文字列を強制的に変換します。番号。 IE は NaN を返しますが、[1,] が文字列に変換された後の「1」にはカンマが含まれるため、残念ながら NaN は数値ではありません。他の標準ブラウザは、ゼロ以外の数値である -1 を返します。 <br>ご存知のとおり、NaN をブール型に変換すると false が返されるため、IE では -[1,] は false を返します。ブール型 (-1 など) に変換された 0 以外の数値は、標準ブラウザでは true を返します。したがって、!-[1,] は、IE では true を返しますが、他の標準ブラウザでは false を返すという判定結果が得られます。これにより、IE ブラウザを区別して判断するという目的も達成されます。 <br>もちろん、前に述べたように、Microsoft は実際にはこのバグについて長い間知っていましたが、修正したことがなかったので、将来的に IE8 IE ブラウザがまだ動作するかどうかはわかりませんが、基本的に IE は動作しませんIE は何世代にもわたって修復されてきたため、将来的にも修復される可能性は低いです。 <br>以下は IE ブラウザを区別するための他のコードです。これらも参照できます: <br><br><div class="codetitle"><span><a style="CURSOR: pointer" data="88705" class="copybut" id="copybut88705" onclick="doCopy('code88705')">コードをコピーします<u></u></a> コード</span></div> <div class="codebody" id="code88705"><script type='text/javascript'> <br>// ディーン・エドワーズからのオプション: <br>var ie = /*@cc_on!@*/false ; <br> // コメント行を使用します: <br>var ie//@cc_on=1; <br>// バリエーション (短い変数): <br>var ie = 'v'=='v'; 🎜>/ / ギャレス・ヘイズ (元記録保持者) へのオプション: <br>var ie = ! <br><br>;</div>