2011-06-14 6 views
1

デスクトップとタブレットユーザーのレイアウト/デザインを完全に分離する予定です。私のアプリはJavaに基づいています。 私の質問は次のとおりです。 1.リクエストがデスクトップまたはタブレット(iPad/Xoomなど)から来ているかどうかを検出する最適な方法は何ですか 2.これはJSのユーザーエージェント文字列ではなくサーバー側で処理できますか?タブレットまたはデスクトップのユーザーを検出する

リダイレクトの実際の例は、Yahooにアクセスしようとする場合です。つまり、リクエストがデスクトップブラウザから送信された場合はwww.yahoo.comにリダイレクトされ、iPadなどのタブレットデバイスからのリクエストの場合はwww.yahoo.com/tabletにリダイレクトされます Yahooの例に沿って何かを計画している。彼らがそれをどのように実装したかはわかりません。

私は、desktop.cssとtablet.cssのような2つの別々のCSSを制御し、CSSのメディアクエリまたはJSのユーザーエージェントを使って検出する必要があると思っている人もいます。しかし、要点は、レイアウト/デザインは、私がCSSでしかコントロールすることができない理由とその2の間で非常に異なっているため、私は別のタブレット版のWebアプリケーションを持ってリダイレクトを行う予定です。

可能な限り多くの提案をお知らせください。

ご協力いただきありがとうございます。

+3

私はそれを知りません:なぜサーバー側で 'user-agent'を使用しないのですか? –

+0

ユーザエージェントが検出すると、あなたのために簡単になります。それ以外の場合、画面幅の解像度を検出できますが、おそらくあなたが望むものではありません。 – ngen

+0

私は多くの場所でユーザーエージェントの文字列が矛盾していると読んでいます。そのため、ブラウザの検出に避けるべきです。サーバー側での動作もわかりません。 – testndtv

答えて

1

HTTPリクエスト内のユーザーエージェント文字列をチェックする必要があります。それに基づいて、ユーザーがデバイスブラウザから送信されたユーザーエージェント文字列を変更していない場合、デバイスを識別できます。

0

私はかなり同じ問題に取り組む必要がありました。デスクトップか非デスクトップかを区別する必要がありました。私はJavaScriptを使ってクライアント側の検出を行った。私は、溶液中RequireJSを使用していて、ここに私のモジュールです:

define(function(){ 
    var isTouchDevice = function() {  return window.screenX === 0 && 'ontouchstart' in window || 'onmsgesturechange' in window; }; 
    var isDesktop = !isTouchDevice() ? true : false; 
    return isDesktop; 
}); 

私は読みやすくするための変数isDesktopを追加しました。

+1

私のAsus Zenbook Infinityはタッチスクリーンを持っているがタブレットではない...悲しいことにそこにはない本当にこの決定をする良い方法です。 (ヘック、私はタッチスクリーンを持っている約2002年から富士通ラップトップを持っている...) – McGuireV10

関連する問題