10

jQueryを使用してIE9以下を検出できるようにしたい(または、より良い方法がある場合)。ブラウザのバージョンが IE9 以下の場合、Chrome や FF などにアップグレードするオプションを含むモーダルをロードします。

$.browser が機能しなくなったことを読んだので、私が望むものを達成するための最良の方法は何かと思っています:

$(document).ready(function(){

   /* Get browser */
   $.browser.chrome = /chrome/.test(navigator.userAgent.toLowerCase());

   /* Detect Chrome */
   if($.browser.chrome){
      /* Do something for Chrome at this point */
      alert("You are using Chrome!");

      /* Finally, if it is Chrome then jQuery thinks it's 
       Safari so we have to tell it isn't */
       $.browser.safari = false;
  }

  /* Detect Safari */
  if($.browser.safari){
      /* Do something for Safari */
      alert("You are using Safari!");
  }

});
4

5 に答える 5

11

IE のバージョンを検出するために jQuery を使用しないでください。代わりに条件付きコメントを使用してください。

なんで?そもそもなぜこれらの古いバージョンをターゲットにしたいのかをよく考えてください。おそらく、必要な特定の JS/CSS 機能がサポートされていないためです。では、これらの古いバージョンで確実に実行される独自の JS コードを維持したいですか? もしあなたがその道を行くなら、あなたが書いた検出コードが IE6 や 5 や 4 で動くかどうかを考え始める必要があります... 辛いです!

代わりに、次のことを試してください。

  1. モーダル/バナー要素を HTML に追加します。
  2. メインの css ファイルで、display: none を使用してこの要素を非表示にします。これにより、最新バージョンの IE および IE 以外のブラウザーでは表示されなくなります。
  3. この要素を表示する IE のみの css または js ファイルを作成します。
  4. 必要な IE バージョンを対象とする条件付きコメント内にこのファイルを含めます。

以下の例では、CSS を使用した単純なリビールを使用していますが、必要に応じてこれを JS に簡単に置き換えることができます。複雑にしすぎないでください。初期の IE バージョンで簡単に壊れてしまう可能性があります。

#index.html
<html>
  <head>
    <link rel="stylesheet" type="text/css" href="main.css">
    <!--[if lte IE 9]>
      <link rel="stylesheet" type="text/css" href="ie-only.css">
    <![endif]-->
  </head>
  <body>
    <div class="ie-only">Go upgrade your browser!</div>
  </body>
</html>

#main.css
.ie-only { display: none }

#ie-only.css
.ie-only { display: block }

便利な条件付きコメント リファレンスを次に示します。

于 2013-10-24T09:54:02.227 に答える
3
var isIE9OrBelow = function()
{
   return /MSIE\s/.test(navigator.userAgent) && parseFloat(navigator.appVersion.split("MSIE")[1]) < 10;
}
于 2015-04-24T02:00:03.670 に答える
0

サイトポイントから調整:

if(navigator.appVersion.indexOf("MSIE 9.") !== -1)
于 2016-12-29T10:31:51.803 に答える