2011-01-19 11 views
2

jQueryを使用してUsers Browser-Agentを検出し、ブラウザ名をCSSクラスとして本文に追加します。これはwebkitとmozillaの魔法のように機能しますが、msieでは失敗しますが、理由はわかりません。 msieの場合は、«msie»だけでなく、使用されているmsieのバージョン番号(たとえば、「msie7」や「msie8」など)も追加する必要があります。jQueryを使用して、ブラウザ名をCSSクラスに追加する

すべて動作しますが、msieセクションのみが動作しません!

私(フル)jQueryの-コード:

<script type="text/javascript"> 
<!-- 
(function($){ 
    $(function(){ 

     var $copy = $('div.SPA_printcontact').clone(); 
     var $body = $('body'); 

     $copy.insertAfter('#printdate'); 

     if($.browser.msie) { 
      $body.addClass('msie') 
      var userAgent = userAgent.substring(0,userAgent.indexOf('.')); 
      var version = userAgent; 
      $body.addClass('msie' + version) 
     } 
     if($.browser.webkit) { 
      $body.addClass('webkit') 
     } 
     if($.browser.mozilla) { 
      $body.addClass('mozilla') 
     } 

    }); 
}(jQuery)); 
--> 
</script> 
+0

へのアプローチ(たぶん?)が異なる適用されることを、私はそれはあなたが尋ねたものではないということを知っているが、私は指摘する義務を感じます異なるブラウザへのスタイルにはいくつかの問題があります。ここには、このテーマに書かれた多くの記事があります:http://css-tricks.com/browser-detection-is-bad/ – polarblau

+0

あなたは '$ .browser.version'について聞いていないふりをしています。私は間違っているかもしれません。 :)と何が 'すべてが動作し、msie-sectionだけではありません! ' IEで何が起こっているのかをヒントできますか? – Reigel

+1

あなたが見逃したブラウザや、悪いデザインのIEの新しいバージョンのスクリプトは失敗します。 –

答えて

4

http://api.jquery.com/jQuery.browser/

バージョンを取得することがない代わりに

EDITを$ .browser.versionを使用してみてくださいによって提案されたように、バージョンはjQueryので提供します。これをjQuery v1.9以降では廃止予定です。以下のトムの答えを参照してください。

+0

$ .browser.versionを使用して、クラスをボディに取得します。よ! ...しかし...名前は«msie7.0»...これはCSSの問題を引き起こします。«。»...どうすれば«msie7.0»を減らして«msie7»や«msie8»などを追加するだけですか? – albuvee

+0

$。browser.version.replace( "。0"、 ""); –

+0

私はあなたとDr.Molleが混在しているのです。答え:--- var userAgent = $ .browser.version.substring(0、$。browser.version.indexOf( '。'));} - - – albuvee

-1

( '体')を$を使用してみてください。addClass()問題が解決しない場合は、「($( '体')ATTRを試してみてください。クラス "、msie +バージョン)。

+0

この例をもう一度読みます。 –

2

グローバルオブジェクトuserAgentはありません。それはnavigatorのメンバーですので、代わりにnavigator.userAgentを使用するか、Mohib Sheth

+1

私はそれがすべてを変えると確信しています。 'var userAgent = navigator.userAgent.substring(0、navigator.userAgent.indexOf( '。'));' –

+0

申し訳ありません、前のコメントはあなたのためではありませんでした! ;-) – albuvee

+0

私はナビゲータを追加すると、«msie»と«msieMozilla/4»を取得します。 -/ – albuvee

0

あなたはDetectizr

https://github.com/barisaydinoglu/Detectizr

Detectizrが

  • デバイス
  • デバイスモデル
  • デバイスの向き
  • 画面サイズ
  • を検出するためにModernizrの拡張である使用することができます210
  • オペレーティングシステム
  • オペレーティングシステムのバージョン
  • オペレーティングシステムのバージョン、フル
  • ブラウザ
  • ブラウザバージョン
  • ブラウザエンジン
  • ブラウザプラグインこれらのセットの

検出はオプションであり、缶無効にする。

代わりDetectizrが基づいているhttp://rafael.adm.br/css_browser_selector/もある(より軽量である)

関連する問題