Вы можете использовать следующую функцию 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>
Однако я думаю, что он всегда будет возвращать 96 на машинах с Windows.
Насколько мне известно, операционная система не может определить фактические физические размеры области просмотра. Так что вполне может быть, что программное обеспечение на самом деле не может знать реальный DPI.
Тем не менее, профессионалы в определенных отраслях следят за тем, чтобы отображаемый на экране DPI соответствовал реальному DPI. В этом случае, вероятно, будет достаточно приведенного выше javascript.
Примечание.
Вышеупомянутый код протестирован в Opera 9, IE6 и 7 и Firefox 3.6 на WinXP и Win2k.
Обновление:
Добавлен параметр noCache. Но я сомневаюсь, что это подействует. Я тестировал его с увеличением в FireFox и Opera на вышеупомянутых версиях Windows, и они продолжают указывать DPI как «96», независимо от величины увеличения. Было бы интересно посмотреть, что из этого делают мобильные устройства.
person
Jacco
schedule
22.02.2010