我发现到现在的唯一方法,是获得offsetWidth检测屏幕DPI,与height
和一英寸的width
测试div
元素的offsetHeight: http://www.infobyip.com/detectmonitordpi.php如何使用JavaScript
有没有一种方法来检测屏幕DPI通过JavaScript代替?
谢谢,
Atara。
我发现到现在的唯一方法,是获得offsetWidth检测屏幕DPI,与height
和一英寸的width
测试div
元素的offsetHeight: http://www.infobyip.com/detectmonitordpi.php如何使用JavaScript
有没有一种方法来检测屏幕DPI通过JavaScript代替?
谢谢,
Atara。
<div id='testdiv' style='height: 1in; left: -100%; position: absolute; top: -100%; width: 1in;'></div>
<script type='text/javascript'>
dpi_x = document.getElementById('testdiv').offsetWidth;
dpi_y = document.getElementById('testdiv').offsetHeight;
</script>
然后你可以使用jQuery发送dpi_x
和dpi_y
这对您的服务器
到目前为止,还没有标准和支持的解决方案。
window.devicePixelRatio
,正如laurens peeters所建议的那样,如果您不关心IE或从古代的任何浏览器(如2013年1月初)(例如Firefox 17),都可以正常工作。
请参阅如何得到这个信息,2012年年底的Cross Browser Retina/High Resolution Media Queries(和各种评论和链接有),但你必须保持再次搜索,并且调整你的代码,每隔一段时间,直到事情终于得到规范,在每个浏览器中都实现了,而且广泛使用的版本可以停止关注旧版本......
dpr与DPI不同。 dpi =每英寸有多少像素。 dpr =像素与屏幕的比率。除了高密度设备以外,其中大部分是1。 – 2013-08-17 20:20:52
你可以像这样得到dpr的DPI:DPI = 96 * dpr。在浏览器中(并且仅在浏览器中),96的DPI是1的dpr。在某些时候某人决定(以及其余部分),96px在浏览器中为1英寸(这是一件好事,只要你可以访问dpr)。在Windows 10和4K显示器上正确返回2.5的dpr。我会认为,正确的dpr也会返回FullHD屏幕(这取决于您操作系统中的DPI设置,而不是您的屏幕分辨率) – 2017-05-23 05:42:26
这将取决于显示器DPI是否在第一时间被精确校准。 – Quentin 2012-02-15 11:06:22
那是_is_一个JavaScript函数,不是吗? :) – AKX 2012-02-15 11:08:00
你所描述的方法是我能想到的在JavaScript中做的唯一明智的方式。至于PHP,它最终所做的就是渲染文本。它不知道或关心客户如何显示该文本。记住字面上任何东西都可以连接到您的Web服务器并请求一个PHP页面,其中一些甚至根本没有图形显示(googlebot,curl会话,行模式浏览器和屏幕阅读器等) – GordonM 2012-02-15 11:09:39