ホームページ  >  記事  >  ウェブフロントエンド  >  `navigator.appName` と `navigator.appVersion` を使用すると、古い IE バージョンを検出できますか?

`navigator.appName` と `navigator.appVersion` を使用すると、古い IE バージョンを検出できますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-06 14:54:02829ブラウズ

Is Using `navigator.appName` and `navigator.appVersion` Reliable for Detecting Older IE Versions?

JavaScript での IE バージョン (v9 より前) の検出

検出基準と提案されたコード

ユーザーが v9 より前のバージョンの Internet Explorer を使用して Web サイトにアクセスしているかどうかを判断するために、提案されたコードは navigator.appName プロパティと navigator.appVersion プロパティを利用します。

if (navigator.appName.indexOf("Internet Explorer") != -1) {
    // User is using IE
    // Check for IE version < 9
}

このコードは実行しますか?トリック?

ユーザー エージェント文字列のスプーフィングと機能サポートの検出に関して提起された懸念に対処しているにもかかわらず、提案されたコードにはいくつかの制限があります。

  • 条件文: 条件付きステートメントは、異なる IE バージョンをターゲットにする場合に便利ですが、IE5 ~ 9 でのみサポートされているため、このアプローチは最新のブラウザーでは廃止されています。
  • 精度 (IE 1 および IE 10 ): コードは、IE 1 および 10 以上の IE バージョンの検出に失敗します。
  • 完全性: コードは、潜在的なエッジ ケースを無視して、IE バージョン 9 未満のみをチェックします。

推奨される代替手段

これらの制限を克服するには、より包括的なアプローチとして CSS クラスベースの検出を使用します。

  1. 定義さまざまな IE バージョンを表す CSS クラス。例:
html.lt-ie9 { ... }
html.lt-ie8 { ... }
html.lt-ie7 { ... }
  1. これらのクラスを に適用します。検出された IE バージョンに基づく要素:
    <!--[if lt IE 7]> <html class="lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
    <!--[if IE 7]>    <html class="lt-ie9 lt-ie8"> <![endif]-->
    <!--[if IE 8]>    <html class="lt-ie9"> <![endif]-->
    <!--[if gt IE 8]><!--> <html> <!--<![endif]-->
    1. CSS を使用して、検出された IE バージョンに固有のスタイルを指定するか、割り当てられたクラスに基づいて JavaScript ロジックを実装します:
    if ($('html').is('.lt-ie7, .lt-ie8, .lt-ie9')) {
        // IE version < 9
    } else {
        // Other browsers
    }

    この方法では、さまざまなブラウザ バージョンを処理するための柔軟性、互換性、および制御が向上します。

    以上が`navigator.appName` と `navigator.appVersion` を使用すると、古い IE バージョンを検出できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。