以下のコードを見つけましたが、理解できません。
if (!-[1, ] && !window.XMLHttpRequest) {
document.execCommand("BackgroundImageCache", false, true);
}
どういうif(!-[1,])
意味ですか?ありがとう
以下のコードを見つけましたが、理解できません。
if (!-[1, ] && !window.XMLHttpRequest) {
document.execCommand("BackgroundImageCache", false, true);
}
どういうif(!-[1,])
意味ですか?ありがとう
古いInternetExplorerを検出するのはハックです。最新のブラウザ(-[1,]
と同様)にありますが、古いIE(否定)にあります。正しい結果を返す最初のバージョンはIE9です。-1
false
!
NaN
true
その正確なコードは 以外のものを決して生成しないfalse
ため、入力しても意味がありません。これはレンダリングされた出力であり、サーバー側の変数によっては、異なる場合があると思います。
を使用しているのを見るとwindow.XMLHttpRequest
、ブラウザー チェックの形式が悪い可能性もあることがわかります。[1,]
配列を作成しますが、末尾のコンマにより、Chrome と Internet Explorer で配列の扱いが異なります。Chrome はこれを 1 つの数値のみの配列として認識し、暗黙的に数値にキャストできますが、IE はこれを数値にキャストできない 2 つの項目を含む配列と見なします。
-[1,0]
NaN
すべてのブラウザで生成されます。すべてのブラウザで-[1]
生成されます。-1
したがって、IE では-[1,]
生成され (したがってコードが実行されます)、他のブラウザーでは生成されます (コードは実行されません)。NaN
-1
これはひどいハックです。使用しないでください。
が機能するかどうかを知りたい場合はwindow.XMLHttpRequest
、それ以外のことではなく、具体的にテストしてください。
これは特に悪いコードです:
-[1, ]
結果は-1になります。
!-[1, ]
常にfalseになります。
[]は配列を意味するので、これは悪いことです。その配列に複数の値がある-
場合、NaNが得られます。