2011-07-25 12 views
1

ユーザエージェントがiPadなのかどうかによって、別のスタイルシートをロードする必要があります。私は一般的に、ブラウザを検出することは最も素晴らしいアイデアではないことを知っていて、将来のいつか私たちの保守性を損なうでしょう。ユーザエージェントに依存するスタイルシートの読み込み

ここで、ユーザーエージェントを検出するためのJavaScriptがあります。それは動作していません。私は何かを誤ってエスケープしたかもしれない。私が得ているエラーは、赤いニシン(オブジェクト参照)ですが、JavaScriptを実行すると表示されます。

$(document).ready(function() { 
     alert('ready fired'); 
     if (navigator.userAgent.indexOf("iPad") != -1) { 
      //alert('bleep bloop blop...iPad detected'); 
      var stringToWrite = '<script src=\'\<\%\= ResolveUrl("~/Scripts/iscroll.js") \%\>\' type="text/javascript"><\/script>'; 
      stringToWrite += '<link href=\'\<\%\= ResolveUrl("~/Stylesheets/scrollbar.css") \%\>\' rel="stylesheet" type="text/css" \/>'; 
      stringToWrite += '<link href=\'\<\%\= ResolveUrl("~/Stylesheets/iPadCommon.css") \%\>\' rel="stylesheet" type="text/css" \/>'; 
      alert(stringToWrite); 
      document.write(stringToWrite); 
     } 
     //else 
     //alert('bleep bloop blop...who cares browser'); 
    }); 
+0

あなたのuserAgentに問題はありますか? '警告( 'ブリーフブロップブロップ... iPad検出');'呼び出される(コメントアウトされていない場合)? –

+1

個人的に私はサーバ側の言語を使ってその種のチェックをしたいと思っています。 – locrizak

+0

@Peperered Lemons - そうだね。検出は問題ありません。私の文字列はエスケープする必要があります。このjavascript webapp online用のこの偽の文字列を自動的にエスケープすることを願っています。 –

答えて

1

おそらく、それ以外の場合は、JavaScriptを持っているブラウザでは動作しません、サーバー側でエージェントを検出する検討すべきです無効にする。

+0

+1私は、私が言われたことに関係なく、なぜこれを行うべきであるか見始めている。 @Quentinには良い点があります。 –

2

は、インターネット上でランダムにこれを見つけた:

//returns true if user is using one of the following mobile browsers 
var ismobile=navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(android)|(webOS)/i) 

http://www.javascriptkit.com/javatutors/navigator.shtml

0

ハンドヘルドデバイスに固有のスタイルルールを使用する場合は、可能であれば@media handheldを使用する必要があります。

それはあまりにも、もちろん、あなたがAndroidの対iPhone対iPad用に異なるCSSを必要とする、すなわち場合は、サーバー側を検出すればいいと

のように、 <html>および/または <body>タグにCSSクラスを追加している場合
<html class="android"> 

または

<body class="iOS"> 

クエンティンさんのコメントは権利である - サーバーが何JAV実行されていないため<%= ResolveUrl(etc) %>を動作しませんサーバー側のメタタグを記述しようとしていますコメントを書く。サーバーはすでに処理が完了しています。

関連する問題