私は現在、自分のウェブサイトでモバイルデバイスの検出にJavaScriptを使用しています。これにより、モバイルまたはデスクトップのユーザーに異なるコンテンツを提供することができます。ピクセル比率/密度を検出するためのベストプラクティスは何ですか?
ので、同じよう現在、私は、モバイルデバイス上のかどうユーザーならば動作するようにwindow.devicePixelRatio
とscreen.width
を使用します。
var isMobileScreenWidth = ((screen.width/window.devicePixelRatio) < 768)
768px
は、我々は767ので、モバイルやデスクトップを定義し、以下である点ですモバイルと768以上はデスクトップです。そう、
は、これは完璧に動作しますが、私は最近、Firefoxがで、それはwindow.devicePixelRatio
を変えるズームアウトのFirefox、との問題に遭遇しています
zoom = 30%, window.devicePixelRatio = 0.3
zoom = 100%, window.devicePixelRatio = 1.0
zoom = 300%, window.devicePixelRatio = 3.0
これが今私に問題を引き起こす任意のユーザーがいるので、彼らのブラウザをFirefoxで拡大して、そのサイトのモバイル版を入手してください。
私はデスクトップのブラウザとは別のピクセル密度を得る方法が違っていると分かっていたのでしょうか?
私は少量のユーザーエージェントの検出も使用しますが、常に変化するモバイルユーザーエージェントのリストに追いつくために大がかりな作業であるため、画面の解像度とユーザーの両方に依存することはできません同時にエージェントとなります。
誰もがこれについてのアイデアを持っていて、それがすばらしくなるのを助けることができます。
UPDATE:
私はちょうどこの渡って来ている:
window.screen.availWidth/document.documentElement.clientWidth
数学のこの迅速なビットは、この記事で示唆されています
window.devicePixelRatio does not work in IE 10 Mobile?
私はそれ、それをテストしていますFirefoxでうまくいき、問題を解決しましたが、残念ながらChromeで問題が発生しています:
Chrome zoom = 100%,
window.devicePixelRatio = 1.0,
window.screen.availWidth/document.documentElement.clientWidth = 3.0
私はすべてのために機能する固いソリューションを見つけることができないようです。
あなたはモバイルをチェックするためにデバイスのピクセル比率を使用すべきではありません:いくつかの非モバイルデバイスは、 "網膜"(iPad、マックブックプロ...)、モバイルスタイルを表示します。 HD画像にのみ使用してください。 –
@Yukulélé私はあなたの心配を参照してください。このため、 'screen.width'を' window.devicePixelRatio'で分割し、その結果が '768px'(iPadの幅)より小さいかどうかをチェックしています。そうすることで、ほとんどのタブレット端末にモバイルスタイルが表示されなくなりました。 Kindle Fireのようないくつかのタブレットデバイスは、より小さいタブレットなのでモバイルスタイルを表示しましたが。これらのデバイスでは、モバイルスタイルが非常にうまく表示されているため、これは心配していませんでした。 – lukehillonline