如何获取屏幕的物理尺寸(即以英寸为单位)

How to get screen's physical size (i.e. in inches)?

本文关键字:为单位 何获取 获取 屏幕      更新时间:2023-09-26

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

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

我尝试过的第一种方法是您可以在互联网上随处找到的方法:创建一个 CSS 宽度为 1indiv,获取其clientWidthoffsetWidth,然后就有您的 DPI。不起作用,所有设备都报告 96。

第二种方法是使用分辨率媒体查询,大致如下:

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

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

还有什么可以尝试的吗?

96 "DPI"是一个与现实关系不大的Web标准。它测量的英寸最好被视为"逻辑"英寸,对应于字体指标和 CSS 测量值(可以包括磅和英寸)。排版中的"点"被定义为 1/72 英寸,但屏幕在很久以前就不再是 72 DPI。因此,CSS点现在的真正含义是96磅字体高72像素。(这是合乎逻辑的像素,因为这个问题现在被高DPI屏幕进一步混为一谈。

无论如何,大多数本机操作系统都不知道它们的真实物理屏幕尺寸,因此它们甚至没有关于它们可以通过浏览器向 Web 应用程序公开的信息。你问的是不可能的。

看看这篇文章。它完成的:

<meta name="viewport" content="width=device-width, target-densitydpi=device-dpi">