Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用JavaScript检测屏幕DPI_Php_Javascript_Dpi - Fatal编程技术网

Php 如何使用JavaScript检测屏幕DPI

Php 如何使用JavaScript检测屏幕DPI,php,javascript,dpi,Php,Javascript,Dpi,到目前为止,我找到的唯一方法是获得一个测试div元素的偏移宽度,偏移一英寸的高度和宽度: 有没有办法通过JavaScript检测屏幕DPI 谢谢 阿塔拉。 dpi_x=document.getElementById('testdiv').offsetWidth; dpi_y=document.getElementById('testdiv')。offsetHeight; 然后您可以使用JQuery将dpi_x和dpi_y发送到您的服务器 在webkit中,只需从以下位置检索值,即可检测用户是

到目前为止,我找到的唯一方法是获得一个测试
div
元素的偏移宽度,偏移一英寸的
高度和
宽度:

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

谢谢

阿塔拉。


dpi_x=document.getElementById('testdiv').offsetWidth;
dpi_y=document.getElementById('testdiv')。offsetHeight;
然后您可以使用JQuery将
dpi_x
dpi_y
发送到您的服务器


在webkit中,只需从以下位置检索值,即可检测用户是否有所谓的“高dpi屏幕”:

window.devicePixelRatio
正常dpi屏幕将返回1。
iPhone4将返回2,但是像1.8或2.12这样的数字也是可能的。

到目前为止,还没有标准和支持的everywhere解决方案

劳伦斯·皮特斯(laurens peeters)建议,如果你不关心IE或古代的任何浏览器,比如2013年1月初(如Firefox 17),那么window.devicePixelRatio就可以工作


请参阅(以及其中的各种注释和链接),了解如何在2012年末获取这些信息,但您必须继续再次搜索,并不时调整代码,直到最终实现标准化,并在每个浏览器中实现,随着版本的广泛采用,您可以不再关心旧版本…

这首先取决于显示器DPI是否被精确校准。这是一个JavaScript函数,不是吗?:)您描述的方法是我能想到的用javascript实现它的唯一明智的方法。至于PHP,它最终所做的就是呈现文本。它不知道或不关心客户端如何显示该文本。请记住,任何东西都可以连接到您的web服务器并请求一个PHP页面,其中一些甚至没有图形显示(googlebot、curl会话、行模式浏览器和屏幕阅读器等)PHP是服务器端的,因此不可能这样做。就像@GordonM说的。这可能是我找到的链接中的代码的副本。有没有一个简单的函数来返回这个值?是的,它来自于你的链接。我想没有定义javascript函数来返回DPI。但这个解决方案也很容易。我认为这个解决方案是最值得信赖的。在我的1680x1050 15英寸高分辨率MacBook Pro上,使用最新的Safari和Firefox,以及在我的2880x1800(或1440x900“points”)15英寸Retina MacBook Pro上,它似乎可以返回96dpi。还有我的24英寸1920x1200外部显示器。正如Pointy在中指出的那样,当前的浏览器总是返回96。我希望这很快会改变,但到目前为止,情况就是这样。即使这不是标准的(目前),Firefox现在也支持它(从18.0开始)还有Opera和Opera Mobile,但仍然不是IE。当然,有些人没有最新的浏览器。“正常”屏幕的devicePixelRatio只有在缩放级别设置为100%时才会返回1%。因此,这不是检测正在使用的显示器是否为高分辨率(4k)的准确方法屏幕与否。dpr与DPI不同。DPI=每英寸多少像素。dpr=像素与屏幕的比率。除高密度设备外,大多数设备的比率都是1。你可以这样从dpr中获得DPI:DPI=96*dpr。在浏览器中(仅在浏览器中),DPI为96就是dpr为1。在某个时候,有人决定了(接下来是其他的),96px在浏览器中为1物理英寸(这是一件好事,只要您可以访问dpr)。在Windows 10和4K显示器中,它正确返回2.5的dpr。我认为,对于全高清屏幕,也会返回正确的dpr(这实际上取决于操作系统中的DPI设置,而不是屏幕分辨率)@移动设备上的d-ph我们看到DPR通常向下舍入到最接近的整数,从而导致非常不准确的结果。此外,许多手机的DPR远低于其应有值,因此CSS像素宽度不小于360。
window.devicePixelRatio