【问题标题】:Programmatically determine DPI via the browser?通过浏览器以编程方式确定 DPI?
【发布时间】:2010-10-30 11:22:53
【问题描述】:

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

谁能想到一种编程方式来做到这一点?

【问题讨论】:

标签: javascript mootools dpi


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    编辑:

    不幸的是,CSS 单位 点、厘米和英寸不是物理上的 正确的。他们只是相对 正确的。这是我的第一件事 尝试直到我意识到它不是 工作并检查了CSS规范..到 我很沮丧。布兰登·佩尔弗雷

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

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

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

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

    【讨论】:

    • 很遗憾,点、cm 和 in 的 CSS 单位在物理上是不正确的。它们只是相对正确的。这是我尝试的第一件事,直到我意识到它不起作用并检查了 CSS 规范.. 让我沮丧。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      如果目标计算机上没有运行代码,则无法通过浏览器进行操作。如果您可以在目标计算机上安装一些东西,您可能能够确定足够的显示器来计算它。

      【讨论】:

        猜你喜欢
        • 2011-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-01
        • 1970-01-01
        • 2013-10-12
        相关资源
        最近更新 更多