我怎样才能找出每英寸网页浏览者的像素?
题
任何人都可以想办法,我可以发现每英寸像素的用户?我想确保在Web浏览器中的图像显示的究竟的大小我需要它,所以使用分辨率的组合,(我可以从用户代理获得)和每英寸我能做的像素此
然而,我不知道是否有任何的方式来发现每英寸像素的用户,理想地使用JavaScript或一些其它的非侵入性的方法。
任何建议?
谢谢,
CJ
解决方案
您可以使用下面的JavaScript函数来获取DPI。
<script type="text/javascript">
var dpi = {
v: 0,
get: function (noCache) {
if (noCache || dpi.v == 0) {
e = document.body.appendChild(document.createElement('DIV'));
e.style.width = '1in';
e.style.padding = '0';
dpi.v = e.offsetWidth;
e.parentNode.removeChild(e);
}
return dpi.v;
}
}
alert(dpi.get(true)); // recalculate
alert(dpi.get(false)); // use cached value
</script>
不过,我认为它会永远在Windows机器上返回96
。
据我所知,目前还没有办法让操作系统以确定视口的实际物理尺寸。因此,它很可能是,这实际上是不可能的软件知道现实生活中的DPI。
不过,专业人士是某些部门确保屏幕上的DPI现实生活中的DPI相匹配。在那些情况下,上述的javascript很可能是足够的。
注意:强>结果 测试在Opera 9,IE6&7和Firefox 3.6在WinXP和Win2k的上面的代码。
<强>更新强>结果 加入则noCache PARAM。但我怀疑这会产生什么影响。我与放大Firefox和Opera在上面提到的Windows版本进行了测试,他们不断引述DPI为“96”,无论变焦量。将是有趣的,看看有什么移动设备做了这一点。
其他提示
您可以做,像古时的绘图程序一样,并显示可伸缩的统治者。让您的用户拖动实际统治者,直到他们已经把对所述屏幕的物理统治者相匹配。
不是一个严肃的建议在生产中使用,但可能真正得到正确答案的唯一途径:(
在最安全和最简单的将是告诉浏览器你想要什么尺寸的图像。 CSS支持英寸和指标,所以可以指定像任何这些实施例的图像:
<img src="image.png" style="width:15cm;height:10cm;" alt="Centimeters" />
<img src="image.png" style="width:5.9in;height:3.9in;" alt="Inches" />
<img src="image.png" style="width:150mm;height:100mm;" alt="Millimeters" />
可以得到HTTP请求的用户代理报头
User-Agent: Mozilla/5.0 (Linux; X11)
这人会告诉你的操作系统,从这里你可以做出决定。
这可能是非常艰难的 - 即使你以某种方式设法扩展基于DPI的渲染图像,你怎么阻止他的浏览器上直接缩放图像的用户?
你有没有考虑像Flash或Silverlight一些丰富的接口技术?他们可能会给你额外的选项。