如何用javascript获得真正的PPI(每英寸像素数)设备分辨率?
预期的设备和价值的一些例子:
iMac 27英寸:109ppi
iPad:132ppi
19英寸1440x900屏幕:89ppi
...
Amann Malik.. 6
直接在操作系统上运行本机应用程序是获取存储在EDID中的客户端监视器的物理特性的唯一可靠方法.目前没有主流浏览器引擎通过任何Web API提供此信息,并且在可预见的将来可能不会.然而,有几种方法可以将密度近似到不同的精度水平.
所有现代浏览器都通过devicePixelRatio,deviceXDPI等属性提供像素密度的提示,它基本上告诉您客户端进行了多少缩放(相对于1.0x操作系统默认缩放).如果您只针对像Apple系列这样的设备,那么您可能能够分辨哪一个是哪个设备,尽管Apple没有留下一条线索来辨别常规iPad上的iPad mini.
另一种方法是使用设备数据库或专有软件来分析客户端的"用户代理字符串",以实现设备的命中或猜测,然后查找与该设备相关的DPI(如果它存在于其大数据库中).通过利用复杂的数据挖掘算法,昂贵的专有系统可能具有更高的准确性,但无论这样的任何系统都需要持续的手动更新,并且仍然可以保持对客户端操作的开放,因为他们只需更改其用户代理字符串("在桌面模式下查看此网站" )
没有这些信息,这真是一个不幸的情况.我花了无数个小时研究任何可能的方法来制作一个PPI感知的Web应用程序.
也许有一天,有人能够说服WebKit或Mozilla或微软的人们让人们为增强现实创建PPI感知的Web应用程序......叹息
直接在操作系统上运行本机应用程序是获取存储在EDID中的客户端监视器的物理特性的唯一可靠方法.目前没有主流浏览器引擎通过任何Web API提供此信息,并且在可预见的将来可能不会.然而,有几种方法可以将密度近似到不同的精度水平.
所有现代浏览器都通过devicePixelRatio,deviceXDPI等属性提供像素密度的提示,它基本上告诉您客户端进行了多少缩放(相对于1.0x操作系统默认缩放).如果您只针对像Apple系列这样的设备,那么您可能能够分辨哪一个是哪个设备,尽管Apple没有留下一条线索来辨别常规iPad上的iPad mini.
另一种方法是使用设备数据库或专有软件来分析客户端的"用户代理字符串",以实现设备的命中或猜测,然后查找与该设备相关的DPI(如果它存在于其大数据库中).通过利用复杂的数据挖掘算法,昂贵的专有系统可能具有更高的准确性,但无论这样的任何系统都需要持续的手动更新,并且仍然可以保持对客户端操作的开放,因为他们只需更改其用户代理字符串("在桌面模式下查看此网站" )
没有这些信息,这真是一个不幸的情况.我花了无数个小时研究任何可能的方法来制作一个PPI感知的Web应用程序.
也许有一天,有人能够说服WebKit或Mozilla或微软的人们让人们为增强现实创建PPI感知的Web应用程序......叹息