1

「IEでのみ使用可能な非標準のdocument.allオブジェクトの存在を確認することによって」IEを検出する方法を説明する記事を見つけました。

この方法は良い習慣と見なされますか? それは安定しており、本当に将来性のあるものですか?

ここに記事があります:http://tanalin.com/en/articles/ie-version-js/

また、将来の証明のセクションを忘れないでください: http://tanalin.com/en/articles/ie-version-js/#h-future-proof

提案されたコードは次のとおりです。

if (document.all && !document.querySelector) { // IE7 or lower

}
4

4 に答える 4

4

この方法は良い習慣と見なされますか?

いいえ

それは安定しており、本当に将来性のあるものですか?

いいえ

一般に、ブラウザ検出は適切な方法ではありません。

それが問題に対する最善の解決策であり、検出する必要があるブラウザーが IE のバージョンである場合は、条件付きコメントが適しています。

于 2012-10-16T15:36:20.530 に答える
2

私は @Quentin と一緒です。特に、JS に「家にいる」わけではない場合はなおさらです。それは悪いことではありませんが、まれに完全なブラウザ検出スクリプトを使用できますが、コードを完全に理解できない場合は使用しないことをお勧めします。

その理由をうまく説明しているquirksmodeに関する良い記事があります。また、quirksmode では、完全なブラウザー検出スクリプト
を見つけることができます。しかし、私が言ったように、コードを完全に理解していると正直に言うことができない限り、今のところそのままにしておくことをお勧めします...

于 2012-10-16T15:45:42.793 に答える
1

ブラウザの検出は誤りです。

注目すべきは、ダックタイピングの一形態である「特徴検出」です。

別の言い方をすれば、ユーザーが特定のブラウザー バージョンを実行しているかどうかよりも、ユーザーが実行しているブラウザー (ブランドやバージョンに関係なく) が、使用したい機能をサポートしているかどうかに関心があります。

これを行う利点は、ブラウザをアップグレードする以外にも、機能を追加する方法がたくさんあることです。Modernizrのようなライブラリは、JavaScript の実装によって「不足している」機能を追加します。ブラウザの検出ではこれが見逃されます。

ブラウザー検出の「利点」は、多くの個々の機能検出コードの省略形であることです。しかし、これは誤った経済である可能性があります。

一般に、次のいずれかを実行します。

  1. ライブラリを作成している場合は、テストしたいすべての機能について明示してください。
  2. ライブラリを作成していない場合は、ライブラリを使用してください。
于 2012-10-16T15:40:58.567 に答える
0

新しい機能を直接検出する方が常に優れています。この記事は、機能/バグを直接検出することが不可能な場合、または古い IE を除くすべてのブラウザーがずっと前にその機能をサポートしていることを考えると、IE の古い(現在の安定版よりも古い) バージョンを検出することのみを目的としています。

于 2012-10-17T14:53:29.527 に答える