Вопрос по dimension, javascript – Как получить физический размер экрана (то есть в дюймах)?

14

Я пытаюсь выяснить, как получить физические размеры экрана устройства с помощью Javascript. Пока что я пришел к выводу, что в настоящее время это невозможно, но я надеюсь, что кто-то может доказать, что я неправ :).

До сих пор я пытался получить эту информацию, находя DPI устройства, но, похоже, здесь нет способа получить правильное значение, так как все устройства, которые я тестировал (некоторые устройства HDPI и XHDPI Android, iPhone4S, iPad 2 и iPad 3) сообщают о 96DPI.

Первый метод получения DPI, который я пробовал, - это тот, который вы можете найти везде в Интернете: создатьdiv с шириной CSS1inхренclientWidth или жеoffsetWidth и там ваш DPI. Не работает, все устройства сообщают 96.

Второй метод использовалразрешение медиа-запросачто-то вроде:

for (var i=90; i < 400; i++) {
    if (matchMedia('(resolution: ' + i + 'dpi)').matches) {
       return i;
    }
}

Я думал, что это было разумное решение, но, к сожалению, оно также возвращает 96.

Осталось ли что-нибудь, что я могу попробовать?

Я предлагаю проверитьthis threadЕсли вы этого еще не сделали. Я не думаю, что это возможно - по крайней мере, более-менее точно. raina77ow
У меня нет лучшей идеи, чем спросить пользователя. user669677

Ваш Ответ

2   ответа
0

Взгляни наэта почта. It's done with:

<meta name="viewport" content="width=device-width, target-densitydpi=device-dpi">
Я считаю, что это установка DPI, а не его извлечение.
Я надеялся, что с добавленным тегом устройство сообщит правильный DPI, используя один из методов, описанных в моем вопросе. К сожалению, этого не происходит, но спасибо за подсказку. Felix
10

96 "DPI" это веб-стандарт, который имеет мало общего с реальностью. Дюймы, которые он измеряет, лучше всего считать «логичными» дюймы, которые соответствуют метрикам шрифта и измерениям CSS (которые могут включать точки и дюймы). «Точка» в типографии он определен как 1/72 дюйма, но экраны перестали быть последовательно 72 DPI давным-давно. Таким образом, все, что CSS-точка действительно означает сейчас - это то, что шрифт размером 96 точек имеет высоту 72 пикселя. (И это логические пиксели, поскольку проблема теперь еще больше связана с экранами с высоким разрешением.)

Во всяком случае, большинство собственных операционных систем ничего не знают об их истинном физическом размере экрана, поэтому у них даже нет информации о том, что они могли бы открыть для веб-приложений через браузер. То, что вы спрашиваете, невозможно.

Мне интересно, если большинство ОС не знают о физическом размере экрана, как такое приложение, как MS Word, может точно отображать размер страницы при увеличении до 100%? Также другие приложения, такие как Photoshop, почти наверняка должны знать DPI экрана.
Возможно, эта информация была доступнаto операционные системы для некоторого оборудования. Но лишь немногие, если таковые имеются, операционные системы делают его доступным для приложений, и еще меньше приложений его используют. (И ни один веб-браузер не предоставляет эту информацию JavaScript.)
& Quot; 100% & quot; настройки просмотра в приложениях, таких как Word и Photoshop, основаны на жестко заданных пикселях на дюйм в дюймах. значение. Попробуйте сами: сделайте что-нибудь в одном, если эти приложения, распечатайте его и поднесите распечатанную страницу к экрану со значением 100%. Размеры, вероятно, не будут соответствовать. (Большинство приложений предполагают 72px / inch, и большинство дисплеев были более плотными, чем это в течение длительного времени.) Даже если это произойдет, это не произойдет, как только вы измените разрешение экрана или откроете приложение на другом компьютере / дисплее с другой размер экрана и такое же разрешение.
Конечно, все современные операционные системы хорошо осведомлены о физических размерах устройства вывода. Даже старая и грязная Windows-3.1, по крайней мере, предоставляла необходимые поля в своих структурах данных для ее представления (и, конечно, она используется, например, с принтерами). А с момента появления DDC в подключениях к дисплеям компьютерные дисплеи отображают свой физический размер экрана, который вместе с плотностью пикселей переводится в физическое разрешение. Конечно, если программное обеспечение действительно использует эту информацию, это другая история. Но, тем не менее, информация уже давно доступна во всех основных ОС.

Похожие вопросы