最近弄打印的时候,为了设置字体的统一(做过打印的都知道,px,pt等等,并不算一个好的单位, 在打印的时候,结果肯定会和显示在浏览器上的,有差别), 所以非常需要DPI (像素/英寸), 换算px成统一的单位, 这样就可以不论是在打印的时候,还是显示在浏览器里, 都没有什么差别了.
ie 有些私有属性,
screen.deviceXDPI, 返回显示屏幕的每英寸水平点数
screen.deviceYDPI, 返回显示屏幕的每英寸垂直点数
screen.logicalXDPI, 返回显示屏幕每英寸的水平方向的常规点数
screen.logicalYDPI, 返回显示屏幕每英寸的垂直方向的常规点数
这些,都可以帮助用户简单的获得当前系统的DPI (系统的DPI是可以设置的,所以这也增加了预览与实际打印效果统一性的难度)
然而,其他的浏览器却没有这个属性. 那么,如果要做到兼容的处理,怎么去获得.
思考以久, 老是从浏览器API,从某些可以实现的函数等等的角度去思考这个问题, 却忘记了从其他的角度, 用另一种更加简单的方式可以获得, 比如,css
如此例:
<div id="test" style="width:1in;height:1in;overflow:hidden;"></div>
alert(document.getElementById("test").offsetWidth);
太简单了. 这样, 因为offsetWidth 返回的是 px 单位, 但是我实际设置他的大小却是 in 单位. 所以, 马上我就获得了这个数据.
:-)