javascript - 在javascript中获取设备PPI

标签 javascript resolution ppi

如何使用 javascript 获得真实的 PPI(每英寸像素)设备分辨率?

设备和预期值的一些示例:

  • iMac 27 英寸:109ppi
  • iPad:132ppi
  • 19 英寸 1440x900 屏幕:89ppi
  • ...

最佳答案

直接在操作系统上运行 native 应用程序是获取存储在 EDID 中的客户端显示器物理特性的唯一可靠方法。目前没有主流浏览器引擎通过任何 Web API 提供此信息,并且在可预见的 future 很可能不会。 然而,有几种方法可以将密度近似到不同的精度水平。

所有现代浏览器都通过 devicePixelRatio、deviceXDPI 等属性给出像素密度的提示,这些属性基本上告诉您客户端进行了多少缩放(相对于 1.0x 操作系统默认缩放)。如果您只针对少数几款设备(例如 Apple 系列),那么您或许能够分辨出哪个是哪个,尽管 Apple 并没有留下任何线索来区分 iPad mini 和普通 iPad。

另一种方法是使用设备数据库或专有软件来分析客户端的“用户代理字符串”以实现对设备的猜测,然后查找与该设备关联的 DPI(如果它存在于他们的大数据库中) .通过利用复杂的数据挖掘算法,昂贵的专有系统可能具有更高的准确性,但无论如何,像这样的任何系统都需要不断的手动更新,并且仍然对客户端操作保持开放,因为它们可以更改其用户代理字符串(“以桌面模式查看此网站” )

没有可用的信息真是不幸的情况。我花了无数时间研究制作 PPI 感知 Web 应用程序的任何可能方法。

也许有一天有人能够说服 WebKit、Mozilla 或 Microsoft 的人们允许人们为增强现实等创建 PPI 感知 Web 应用程序......唉

关于javascript - 在javascript中获取设备PPI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22861287/

相关文章:

javascript - 如何在 javascript 中使所有大写字母除了字符串包含 '

javascript - 使用 id 声明元素并在同一 JSX 中访问它

c++ - 以毫秒为单位捕获时间

javascript - 如何防止在 ng-dblclick 上选择 AngularJS 中的文本?

javascript - 无法使用 AJAX 下载 TCPDF 生成的 PDF

Kubernetes - 如何在集群级别设置 DNS 策略

ios - "spreading one original pixel into multiple ones"在 React Native 中意味着什么?

ios - Retina iPad 应用程序设计中的 DPI

css - 高 PPI 移动屏幕的主列表以及如何通过 CSS 检测/处理它?

perl - 大致检查 Perl 代码的语法,比 perl -c 快