2013-02-18 12 views
27

ハンドヘルドブラウザ(iOS/Androidの携帯電話/タブレット)が使用されているかどうかを検出する方法はありますか?モバイルデバイス(iOS/Android携帯/タブレット)のブラウザが使用されているかどうかを検出します。

これは、ハンドヘルドデバイスのブラウザで半分の要素を作成するという目標で試しましたが、違いはありません。

width: 600px; 
@media handheld { width: 300px; } 

どうすればいいですか?

編集:jmaes'の答えで参照するページから私は

@media only screen and (max-device-width: 480px)を使用。

+0

モバイルデバイスを検出する目標はありますか、ハンドヘルドデバイスとタブレットを区別できる必要がありますか? –

+0

目的はモバイルデバイスを検出することです。 – seron

+1

タッチスクリーンかどうかを検出するには:http://stackoverflow.com/questions/11387805/touchscreen-media-queries、方向変更:http://stackoverflow.com/questions/13803838/detecting-if-a-device-is-変更可能な向きのjavascript/13805337#13805337 –

答えて

25

更新日(2012年6月):デバイスのランドスケープがタッチデバイスではなくタッチデバイスである間の線がゆっくりとぼやけているため、すべての解像度でタッチとマウス入力をサポートしようとしています。 iPad Proは13インチノートパソコンの解像度でタッチ専用です.Windowラップトップにはタッチスクリーンが付いてくることがよくあります。

他の同様のSO回答(この質問に対する他の回答を参照)は、デバイスの並べ替え、ユーザが使用しているが、それらのどれもが、フールプルーフではない。私はあなたが絶対にデバイスを決定しようとする必要がある場合は、それらの答えをチェックアウトすることをお勧めします。


iPhoneの、いずれかに、無視handheldクエリ(Source)。同様の理由で他のスマートフォンでも同様のことが起こっても、私は驚くことはありません。

私がモバイルデバイスを検出するために使用する現在の最良の方法は、幅を知り、corresponding media queryをキャッチすることです。そのリンクには人気のあるものがいくつか掲載されています。クイックグーグルで検索すると、必要なものが他にも見つかります。

iPhone専用のもの(Retinaディスプレイなど)については、最初に投稿したリンクをチェックしてください。

+1

いいえ、今日のデバイスはデスクトップモニタと同じかそれ以上の解像度を持つため、画面解像度は最善の方法ではありません。 – PSyLoCKe

+2

@EASIデバイスの画面のデスクトップサイズがデスクトップよりも大きい場合でも、「ピクセルサイズ」から「ピクセルサイズ」に縮小されます。つまり、CSSおよびメディアクエリで報告され、使用されるサイズは物理ピクセルサイズよりn倍です(「n」は1,2,3 ...)Eg http://www.mydevice.io/devices/もちろん、画面サイズを使ってデバイスの種類を検出するメディアクエリは面倒ですが、残念ながら多くのオプションはありません。 – ghybs

6

検出モバイルデバイス

関連の答え:https://stackoverflow.com/a/13805337/1306809

本当に誰にでもできるのです単一のアプローチがありません。最良の方法は、必要に応じてさまざまなトリックをミックスしてマッチさせることです。ハンドヘルドデバイスの幅広い検出に成功する可能性が高まります。いくつかのオプションについては上のリンクを参照してください。

+0

ハハ、私たちが検出できない奇妙な例ユーザーがタッチスクリーンを持っているかどうか – Kokodoko

+1

@Kokodokoええ、それは奇妙に見えます。問題をもっと面白くするために、いくつかの新しいWindowsラップトップは、タッチスクリーン付きの従来のコンピュータです。他のデバイスは高解像度を持ち、大型iPad Proのようにタッチスクリーンのみです。私は、今日のベストプラクティスはすべての決断においてすべてをサポートすることだと言っています。 – jmeas

5

モバイルデバイスを検出しないでください。代わりにモバイルデバイスを検出してください。

現代(2016)は、現代のブラウザ(http://caniuse.com/#feat=css-media-resolution参照)で動作するように見えるインチ/ cm/pxあたりのドットを検出する方法があります。私は、比較的小さな画面、向きは問題ではない、そして固定されたコンピュータモニタを区別する方法が必要でした。

多くのモバイルブラウザがこの機能をサポートしていませんので、1はすべてのケースのための一般的なCSSコードを書いて、大画面のためにこの例外を使用することができます。

@media (max-resolution: 1dppx) { 
    /* ... */ 
} 

のWindows XPと7の両方が1のデフォルト設定を持っていますピクセル(または96dpi)あたりのドット。私は他のオペレーティングシステムについてはわかりませんが、これは私のニーズにとっては本当にうまく機能します。

編集:dppxはInternet Explorerでは動作しないようです。代わりに(96)dpiを使用してください。

+1

ユーザーがユーザーである場合は、それが表示されます。ウィンドウズ10の下で4kモニタを使用し、UIサイズを増加させた。 – mseddon

+0

私はこれを信用しません – connorbode

1

私は、これは古いスレッドです知っているが、私はこれが誰かを助けるかもしれないと思った:

モバイルデバイスは、コンピュータが高さよりも大きな幅を持って、逆に、幅よりも大きい高さを有しています。たとえば、

@media all and (max-width: 320px) and (min-height: 320px) 

だから、私はすべての幅がそうしなければならないと思います。

+1

横長モードのモバイルデバイスでは機能しません。 – evenfrost

+0

さらに、ブラウザウィンドウのサイズを変更することができます。 –

1

モバイルデバイスを検出する信頼性の高い方法は、navigator.userAgent文字列を調べることです。例えば、私のiPhone上でユーザーエージェント文字列は次のとおりです。

のMozilla/5.0(iPhone; CPU iPhone OS 10_3_2のMac OS Xなど)のAppleWebKit/603.2.4(ヤモリのようにKHTML、)バージョン/ 10.0モバイル/ 14F89 Safari/602.1

この文字列には、iPhoneとモバイルという2つの通知キーワードが含まれています。私が提供されていないデバイスのための他のユーザーエージェント文字列:この文字列を使用して

https://deviceatlas.com/blog/list-of-user-agent-strings

、私は次のコードを使用して、真または偽のいずれかに私のウェブサイト上でJavaScriptのブール変数bMobileを設定します。

var bMobile = // will be true if running on a mobile device 
    navigator.userAgent.indexOf("Mobile") !== -1 || 
    navigator.userAgent.indexOf("iPhone") !== -1 || 
    navigator.userAgent.indexOf("Android") !== -1 || 
    navigator.userAgent.indexOf("Windows Phone") !== -1 ; 
+0

これは正常に動作します... iPhone、Android、Windows Phoneだけが気になるならば。しかしそこには、他の全てのデバイスクラスがあります。 BlackberryとOpera Miniユーザーを忘れないでください。 Opera Miniは単独で350万人のユーザーを占めています。また、古いフィーチャーフォンユーザーはこれらのパターンにもマッチしません。これらはモバイル固有の経験が絶対必要なデバイスです。醜い現実は、この分野では単純なソリューションがもはや機能しないほど複雑になっているということです。 –

+1

はい、あなたは正しいですが、@RonanCreminですが、好きなユーザーエージェント文字列のキーワードを追加できます。(そして、私のコードは正規表現を使ってより効率的にすることができることを認識しています。)また、このような状況はしばしば最初に現れるより複雑です。 –

関連する問題