6

携帯電話ユーザーがモバイル向けに最適化された Web サイトを表示する Web アプリケーションがあります。新しい Samsung Galaxy SIII ユーザー エージェントは、要求が携帯電話からのものであるという手がかりを提供しません。携帯電話を検出するための最善の方法は何ですか?

私は JavaScript 機能の検出 (モダナイザー) を認識していますが、より良いものを望んでいます。以下は、Samsung Galaxy SIII ユーザー エージェントです。

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (Gecko のような KHTML) Chrome/11.0.696.34 Safari/534.24

編集: SIII には 2 つのユーザー エージェントがあります。上は「デスクトップ」バージョンです。楽しいもの。詳細については、以下のリンクを参照してください。

http://www.anandtech.com/Show/Index/5310?cPage=19&all=False&sort=0&page=5&slug=samsung-galaxy-nexus-ice-cream-sandwich-review

4

3 に答える 3

3

そのユーザー エージェントを見ると、非ハンドヘルド デバイスと区別するのは非常に難しいと言わざるを得ません。

ブラウザー検出の問題は、ユーザー エージェント文字列を微調整するのが明らかに簡単であるため、サーバーが伝えていることが正直かどうか本当にわからないことです。

この場合、次の 2 つのオプションがあります。

  • 電話が送信するすべてのヘッダーを確認して、一意にすることができるヘッダーがあるかどうかを確認できます

  • または、ページの読み込み時間などをテストして、何らかの回避策を見つけてください...気まぐれな例として、ハンドヘルド デバイスのブラウザーは、通常、デスクトップのブラウザーよりもページのレンダリングが少し遅いため、可能なすべてのモバイル デバイスを次のようなものでテストした後:

-

if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
 // some code..
}

シンプルなスクリプトしかないページが理想的な時間にロードされていないかどうかを確認できます。

あなたは要点を理解します。

また、ここにアクセスして、あなたを検出できるかどうかを確認してください: http://detectmobilebrowsers.com/

于 2012-07-22T05:50:02.203 に答える
2

「デスクトップ モード」ユーザー エージェントは、ユーザーが意図的にデスクトップ モードを使用することを選択した場合、Web サーバーがモバイル/タブレット インターフェイスを提供しないように設計されています。

ユーザーの選択を絶対にオーバーライドする必要がある場合、現在 (2013 年) の JavaScript では、次のすべてが当てはまる場合、Android デバイスである可能性が非常に高くなります。

  1. 'ontouchstart' in document.documentElement
  2. navigator.vendor === 'Google Inc.'
  3. /^Linux armv/.test(navigator.platform)

ただし、上記は、タッチ機能を備えた ARM ベースの ChromeBook など、あまり一般的ではないブラウザ設定で誤検知や誤検知を引き起こす可能性があります。などなど。たとえば、テレビのようにタッチ ベースではない Android デバイス。たとえば、Chrome は ARM プロセッサを搭載した Windows RT で実行できますか? たとえば、Intel で実行されている Android。

于 2013-07-31T04:05:32.623 に答える