通过浏览器以编程方式确定DPI?

时间:2009-06-01 18:01:28

标签: javascript mootools dpi

我想以编程方式确定用户显示器的DPI,以便以精确的单位数(厘米/英寸)显示网页。我知道这是一个奇怪的要求:它是一个可视化研究项目,它是一种控制。我们目前通过让用户在屏幕上放置信用卡并将可调整大小的div(通过Mootools)与真实信用卡相匹配来实现,并且我们可以获得DPI并正确显示页面。

任何人都可以想到以编程方式执行此操作吗?

5 个答案:

答案 0 :(得分:3)

如果你在javascript / mootools中这样做,CSS units是你的朋友。您可以指定以英寸或厘米为单位的尺寸,或甚至指定点(1/72英寸)。如果您出于某种原因绝对需要DPI,即使您可以在这些单位中指定尺寸,只需将您正在使用的“可调整大小”div调整为已知大小,并根据翻译的像素大小进行计算。

修改

  

不幸的是,CSS的单位   point,cm和in不是物理上的   正确。他们只是相对而言   正确。这是我的第一件事   试过,直到我意识到它不是   工作并检查CSS规范..到   我很沮丧。 - Brandon Pelfrey

这是一个好点;浏览器倾向于通过假设默认DPI(我认为72或96)来伪造它并继续使用它。

好吧,如果你需要像你要求的精确尺寸,那你就不走运了。如果不能同时读取浏览器所在的显示器的当前分辨率和该显示器的“可视屏幕区域”,您将永远无法获得它。是不是你不会通过Javascript得到它。

我建议您根据CSS单位做出浏览器的默认假设。然后,您可以允许用户使用您提到的方法“调整大小”,但只有在必要时才 。在单独的页面上执行此操作,将DPI计算存储为用户会话的一部分或作为cookie。

或者,一旦Microsoft修复this bug,您就可以使用Silverlight的“设备无关单元”进行精确缩放。

答案 1 :(得分:2)

你做不到。 DPI是屏幕像素分辨率和显示器物理尺寸的函数。后者在我所知道的任何浏览器界面中都不可用。

答案 2 :(得分:0)

我认为您无法获得精确的结果 - 例如,您可以使用显示器调整图片大小。我宁愿坚持用户驱动的方法,尽管你可以f.e.检测屏幕分辨率以进行初步估算。

答案 3 :(得分:0)

如果目标计算机上没有运行代码,则无法从浏览器中进行操作。如果您可以在目标计算机上安装某些东西,您可能能够确定监视器的足够数量来计算它。

答案 4 :(得分:0)