2011-08-29 12 views
14

jQueryプラグインから古いバージョンのIE(IE9は正常)を実行しているかどうかを検出する必要があるため、HTMLを制御できません。古いIEのバージョンを検出する

ユーザーエージェント文字列を解析して$.browser.msieを使用することはお勧めできません。 $.supportメソッドでも問題は解決されません。

だから、これはうまくいくとわかりましたが、「良い習慣」であるかどうかはわかりません。

$('body').append('<!--[if lte IE 8]><script>$("body").addClass("oldie");</script><![endif]-->'); 
var old_ie = $('body').is('.oldie'); 

この方法を使用するか、ユーザーエージェント文字列を解析するに固執するだろう(私はそれはIEかどう把握する必要があり、バージョン番号を取得しますか)?

答えて

16

あなたは、IEのバージョンを検出するために、この

var ie = (function() { 
    var undef, v = 3, div = document.createElement('div'); 

    while (
     div.innerHTML = '<!--[if gt IE '+(++v)+']><i></i><![endif]-->', 
     div.getElementsByTagName('i')[0] 
    ); 

    return v > 4 ? v : undef; 
}()); 

を実行することができます。

出典:http://ajaxian.com/archives/attack-of-the-ie-conditional-comment

そして

if (ie < 9) { 
    // do your stuff, for instance: 
    window.location = 'http://getfirefox.com'; // :p 
} 
+0

LOL私はJames Padolseyが1年以上前にそれを理解したことを知っていたはずです:)ありがとう! – Mottie

+0

以前はRangyを見ていたのを覚えていますが、テキストエリアで作業していなかったと思います。今月新しいバージョンがリリースされたので、もう一度見てみる必要があります。再度、感謝します! – Mottie

2

あなたはIE9を検出するための特定の必要性を持っていた理由は、以下のアドバイスは保持している一般的なので、あなたは明示的に、あなたの質問には言及しませんでした。

特定のブラウザ/バージョンを検出するのではなく、代わりに特定の機能を検出する必要があります。 Modernizrはこれを助けてくれる良い場所です。

これについてどのように
+0

IEがサポートしていないことがありますが、JavaScriptを使って確認できないことがあります。 CSSのようなもの。 –

+0

私が悩んでいるプラグインは、テキストエリア内にキャレットを配置する必要があります... IE9はキャレットの変更なしでうまくいくようですが、古いバージョンは動作しません。 – Mottie

+0

@fudgey [Rangy](http://code.google.com/p/rangy/) –

1

if (!($.browser.msie && $.browser.version < 9.0)) { 
    // Apply only to IE8 and lower 
} 

注IE8は、上記のリンクを参照してくださいIE7

として
+0

私は私の質問に記載されているようにブラウザスニッフィングを避けようとしています。 – Mottie

+5

$ .browserは1.3から廃止され、1.9から削除されました。 –

+1

私はちょうど未来の読者に、彼らが見ている答えが現在/将来はうまくいかないかもしれないことを知りたがります。 –

1

https://msdn.microsoft.com/en-us/library/ms537509%28v=vs.85%29.aspx を示していること、これは公式の答え:) 簡単に言えば、あなたのhtmlのコード、次のかもしれませんページ。

<!--[if gte IE 9]> 
<p>You're using a recent version of Internet Explorer.</p> 
<script type="text/javascript">//do something</script> 
<![endif]--> 

<!--[if lt IE 9]> 
<p>Hm. You should upgrade your copy of Internet Explorer.</p> 
<script type="text/javascript">//do something</script> 
<![endif]--> 

<![if !IE]> 
<p>You're not using Internet Explorer.</p> 
<script type="text/javascript">//do something</script> 
<![endif]> 
+0

はい、私はjavascriptを使ってプログラムでこれを行う方法を尋ねていました...プラグインの作者は、すべてのページに条件付きコメントがあると期待することはできないため、独自に追加する必要があります。 – Mottie

関連する問題