2011-10-18 7 views
0

ソースコード:正しい構文ブラウザスニッフィング(のcreateElement)は<IE9

if (navigator.userAgent.toLowerCase().indexOf('msie') != -1 && parseInt($.browser.version, 10)<7) 

編集 - 申し訳ありませんが、間違ったコードを掲載しました。

ie9より小さい特定のブラウザには、上記の正しい構成は何ですか?

おかげ

編集 -

ここで、上記のコードのための理由です:

if (navigator.userAgent.toLowerCase().indexOf('msie') != -1) { 
        hidden = document.createElement('<input type="hidden" name="' + atName + '" value="' + attrId + '"/>'); 
       } else { 
        hidden = document.createElement("input"); 

それはまた、私は大好きだIE9

より低いものでのcreateElementの問題のためです関数全体を書き換えますが、スコープのためにプロジェクトにインクルードされるまでファイルを書き直すことができません - このため、この1行をworに書き直す必要がありますk正しく。

答えて

1

ANDは、有効なJavaScriptのキーワードです。 VERSIONいずれも宣言されていないようです。また、特定のナビゲータやバージョンに対してテストすることはお勧めしませんが、ブラウザが使用する機能をサポートしているかどうかをテストすることをお勧めします。 フィーチャー検出と呼ばれる手法。例えば、ブラウザがXXXで、バージョンがYYYであるかどうかをテストしないで、HTML5's canvas elementを使用する場合などです。ブラウザがHTMLキャンバス要素をサポートしているかどうかをテストします。 Modernizrはこの仕事のための優れたライブラリです。


UPDATE:

そして、あなたは良いプラクティスについて聞きたいと、まだこのブラウザのバージョン検出を主張していない場合:

if ($.browser.msie && parseInt($.browser.version, 10) < 9) { 
    alert('Warning, you are running a crap of a browser. Please upgrade!'); 
} 
+0

それが編集を参照して、このようにする必要があり上のコード。 – Jason

+0

@Jason、いいえ、このようにすべきではありません:-)そうしてはいけないようにしてください。あなたはそれを後悔しません。 –

+0

私の決定ではない - ファイル全体を書き直すことはできません、私はこの1行に対処しなければなりません – Jason