ホームページ  >  記事  >  ウェブフロントエンド  >  海外専門家IEバージョン検出! IEが9になったので、IE検出コード_JavaScriptスキル

海外専門家IEバージョン検出! IEが9になったので、IE検出コード_JavaScriptスキル

WBOY
WBOYオリジナル
2016-05-16 17:57:311197ブラウズ

実際、Daniu のソース コードを学習することは良い進歩であり、新しい視点を得ることができます。
優れた専門家による IE のバージョン検出に関するこの記事を見て、私はただただ驚き、感嘆するばかりです。この短いコードにはたくさんのことが詰め込まれています。
そこで、ここでは、Daniel に近づく準備ができており、現在も熱心に取り組んでいる IT 同僚がそこからさらに多くの知識を学べるように、Daniel のソース コードを解釈することにしました。

まず、世界最短の IE 検出コードを見てみましょう:

コードをコピーします コードは次のとおりです。

var isIE = !-[1,];

非常におなじみですが、バグがあり、ie9 を検出できません。なぜですか?これはie9がリリースされる前に海外の専門家がieの配列変換機能を利用して行っていたものだからです。 IE9では修復されているのでIE9では無効になってしまいましたが、当時の私としては今でもため息をついたもので、専門家の方々が細部まで研究されていてとても奥が深かったです(当時は私もどうやって修正するかに夢中でした)関数とメソッドを実装するために最も短いコードを使用し、絶えず修正と修正を繰り返しますが、それでも...これはギャップです、ギャップです)。
現時点ではバグがあり、下位互換性がないため、このコードを解釈して分析するつもりはありません。たとえば、理論的には下位互換性がある次の IE の完全な検出に重点を置いています。 IE10 が出てきました、わかりました、使ってください、問題ありません、ギャップを再度描画します。

最初にソース コードを見てみましょう (後でダニエルのアイデアを解釈し、コードの問題点を説明します)
コードをコピーします コードは次のとおりです:

// ------------------------ -------- ------------------------
// JavaScript で IE のバージョンを検出するための短いスニペット
// ユーザーエージェントスニッフィングに頼ることなく
// ---------------------------------- -------- -------
// IE を使用していない場合 (または IE バージョンが 5 未満の場合):
// ie === 未定義
// IE (>=5) を使用している場合は、次のバージョンを決定できます:
// ie === 7 // IE7
// したがって、IE を検出するには:
// if (ie) {}
// そしてバージョンを検出するには:
// ie === 6 // IE6
// ie > ; 7 // IE8、IE9 ..
// ie // ---- ------ -----------------------------
// 更新: @jdalton からの Live NodeList アイデアを使用中
var ie = (function(){
var undef,
v = 3,
div = document.createElement('div'),
all = div.getElementsByTagName('i' );
while (
div.innerHTML = '',
すべて[0 ]
);
what?while (式 1、式 2) これは何ですか?私たちが習ったwhile(表現)とは違いますか?
ヒント、while 内に式が複数ある場合は、いくつあっても前の式が飛び出しの判定にはなりませんが、最後の式が飛び出しの判定となります。内部のコードが実行されます。
例: while (式1、式2、式3、式4) 式4の真偽のみをエスケープ判定として使用します。
編集してください、神様、まだこのような状態が続く可能性があります。あなたは経験を積んだのですから、すぐに試してみてください。これがダニエルのコードです。私にはただ驚嘆、驚嘆することしかできません。
ほんの数行のコードですが、実にエレガントです。ぜひ自分の知りたい知識を学び、視野を広げていただければと思います。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。