如何使用JavaScript检测屏幕DPI

Ata*_*ara 17 javascript php dpi

我发现到现在的唯一方法,是获得offsetWidth,的offsetHeight测试的div元素与heightwidth一英寸的: http://www.infobyip.com/detectmonitordpi.php

有没有办法通过JavaScript检测屏幕DPI?

谢谢,

Atara.

lau*_*ers 22

在webkit中,您可以通过从window.devicePixelRatio中检索值来检测您的用户是否具有所谓的"高dpi屏幕".

正常dpi屏幕将返回1. iPhone 4将返回2,但也可以使用1.8或2.12之类的数字.

  • 即使这不是标准(现在),它现在由Firefox(截至18.0)和Opera和Opera Mobile支持 - 但仍然不是IE.当然有些人没有最新的浏览器. (2认同)

Lix*_*xas 10

<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>
Run Code Online (Sandbox Code Playgroud)

然后你可以使用jQuery来发送dpi_xdpi_y这对您的服务器

http://jsfiddle.net/sxfv3/

  • 这似乎在我的1680x1050 15英寸高分辨率MacBook Pro上使用最新的Safari和Firefox返回96dpi.还有我的2880x1800(或1440x900"点")15英寸Retina MacBook Pro.和我的24"1920x1200外接显示器. (5认同)
  • 正如Pointy似乎急于在http://stackoverflow.com/questions/14242125/determining-the-width-of-a-webpage-in-inches中指出,当前的浏览器总是返回96.我希望这会很快就会改变,但截至目前,情况正是如此. (4认同)