17

我试图弄清楚如何通过 Javascript 获取设备屏幕的物理尺寸。到目前为止,我的结论是目前不可能,但我希望有人能证明我错了:)。

到目前为止,我已尝试通过查找设备的 DPI 来获取此信息,但似乎无法在这里获得正确的值,因为我测试过的所有设备(一些 HDPI 和 XHDPI Android 设备、iPhone4S、iPad 2 和iPad 3) 报告 96DPI。

我尝试的第一种获取 DPI 的方法是您可以在 Internet 上随处找到的方法:创建div一个 CSS 宽度为 的1in,获取它的clientWidthor offsetWidth,然后就是您的 DPI。不行,所有设备都报96。

第二种方法是使用分辨率媒体查询,类似于:

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

我认为这是一个聪明的解决方案,但不幸的是,它也返回 96。

还有什么我可以尝试的吗?

4

2 回答 2

12

96“DPI”是一个与现实关系不大的网络标准。它测量的英寸最好被认为是“逻辑”英寸,它对应于字体度量和 CSS 测量值(可以包括点和英寸)。排版中的“点”被定义为 1/72 英寸,但屏幕在很久以前就不再始终保持 72 DPI。因此,现在所有 CSS 点的真正含义是 96 点字体是 72 像素高。(这是逻辑像素,因为这个问题现在被高 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 回答