17

Javascriptを介してデバイスの画面の物理的な寸法を取得する方法を理解しようとしています。これまでのところ、私の結論はそれは現在不可能であるということですが、誰かが私を間違っていると証明できることを願っています:)。

これまで、デバイスのDPIを見つけてこの情報を取得しようとしましたが、テストしたすべてのデバイス(一部のHDPIおよびXHDPI Androidデバイス、iPhone4S、iPad 2、およびiPad 3)レポート96DPI。

私が試したDPIを取得する最初の方法は、インターネット上のどこにでもある方法ですdiv。CSS幅が1in、であるを作成し、そのclientWidthまたはoffsetWidthを取得すると、DPIがあります。動作しません。すべてのデバイスが96を報告します。

2番目の方法は、解像度メディアクエリを使用することでした。

for (var i=90; i < 400; i++) {
    if (matchMedia('(resolution: ' + i + 'dpi)').matches) {
       return i;
    }
}

これは賢い解決策だと思いましたが、残念ながら96も返されます。

試すことができるものはありますか?

4

2 に答える 2

12

96「DPI」は、現実とはほとんど関係のないWeb標準です。それが測定するインチは、フォントメトリックとCSS測定(ポイントとインチを含むことができる)に対応する「論理的」インチと最もよく考えられます。タイポグラフィの「ポイント」は1/72インチと定義されていますが、画面は72DPI年前に一貫して停止しました。したがって、CSSポイントが実際に意味するのは、96ポイントのフォントの高さが72ピクセルであることです。(これは論理的なピクセルです。これは、問題がhi-DPI画面によってさらに混乱しているためです。)

とにかく、ほとんどのネイティブオペレーティングシステムは、実際の物理的な画面サイズについて何も知らないため、ブラウザを介してWebアプリに公開できるような情報すらありません。あなたが求めていることは不可能です。

于 2012-06-29T15:07:06.103 に答える
0

この投稿を見てください。それはで行われます:

<meta name="viewport" content="width=device-width, target-densitydpi=device-dpi">
于 2012-06-29T14:38:57.337 に答える