とある最短のIE判定コード
ちょっと前まで、IEかどうかを判別する世界最短のコードは、「IEは垂直タブ(\\v)を理解しない」バグを利用した以下のコードでしたが、
'\v'=='v' // 9byte
via Ajaxian
その後 7byte 版が登場し、去年まではこれが世界最短とされていました。
!+"\v1" // 7byte
via webreflection.blogspot.com
そこで
IEでは、var ary = [1,2,]; ary.length == 3; が成立するため、これを利用したより短い判別コードを考えてみました。
[,]!=0 // 6byte(IEでtrue, IE以外でfalse) +[1,] // 5byte(IE以外で1, IEでNaN)
6byte版で、世界最短かなぁ〜とか思ったのですが、念のため調べてみたら、
webreflection.blogspot.com の 2010-01-08 のコメントに、ほぼ同じようなコード片がポストされてました。
5〜6byte が限界のようです。
今年の夏ごろに登場するIE9βでは、var ary=[1,2,]; ary.length == 2 に修正されてる気がしますが、その場合は、IE5〜IE8を判定するコードとして、ブックマークレットなどで使えるかもしれません。
# これ直さないと、ES5 の Array.forEach などで問題が起きるので
IE9ppで修正されていることを確認しました。
IE9pp では var ary = [1,2,]; ary.length が 2 を返します(IE9で他のブラウザと同じ挙動に修正されました)。
ブックマークレットなんかで、IE6〜IE8を判定するのに使うといいかもね。