|
|
|
| Всем известно, что для корректной подстройки сайта под разные мониторы посетителей, достаточно воспользоваться несложным скриптом на ява скрипт в сочетании с аяксом, но качество и корректность отображения сайта на разных мониках зависит не только от разрешения, но и от диагонали - на 15 и 19 дюймовых экранах сайт смотрится по разному.
ВОПРОС: Как и какими средствами можно определить диагональ монитора посетителя? | |
|
|
|
|
|
|
|
для: Yustys
(10.05.2008 в 14:34)
| | Никакими, браузер такой информации не выдает. Эту информацию можно взять только их реестра, и то не всегда она может быть в явном виде. Если же вы решив теорему Пифагора, найдете диагональ, то она у вас будет одинакова для всех мониторов при одном и том же разрешении, так как размеры катетов будут естественно одни и те же, например, 1024 и 768. | |
|
|
|
|
|
|
|
для: Yustys
(10.05.2008 в 14:34)
| | 1. Можно, например, сразу после тега <BODY> прописать ТЕСТОВЫЙ элемент, который будет иметь ширину ровно один дюйм, например - <HR ID="test1inches" STYLE="width: 1in">.
2. После загрузки этого ТЕСТОВОГО элемента (т.е. сразу после тега <HR ID="test1inches">) надо прописать скриптовой блок <SCRIPT>...</SCRIPT>, в котором произвести следующие действия:
3. Определить ширину и высоту экрана (в пикселах) - screen.availWidth и screen.availHeight.
4. По теореме Пифагора найти диагональ (опять же в пикселах) как корень квадратный из суммы квадратов двух катетов (т.е. двух полученных в п.3 величин).
5. Определить ширину ТЕСТОВОГО элемента (в пикселах) - document.getElementById ('test1inches').offsetWidth.
6. Узнать диагональ монитора (в дюймах), разделив полученное в п.4 на полученное в п.5. Чтобы получить 14, 15, 17, 19 etc... дюймов, результат надо округлить до целых, используя метод toFixed (0). | |
|
|
|
|
|
|
|
для: PAT
(10.05.2008 в 16:58)
| | Интересно, а ведь действительно можно. Только получается ошибка на 1 дюйм. Вернее, для ЭЛТ это будет диагональ рабочей области монитора. | |
|
|
|
|
|
|
|
для: PAT
(10.05.2008 в 16:58)
| | Заинтересовала меня эта фича)) Но неверно она будет давать результат. Первое - document.getElementById ('test1inches').offsetWidth, это будет текущее разрешение монитора в dpi. Оно никак не зависит от выбранного размера экрана, поэтому, например, для 15" монитора, с разрешением 96dpi и размером 1024х768, получим:
<script>
var w = 1024;
var h = 768;
var dpi = 96;
alert(Math.ceil(Math.sqrt(w*w + h*h)/dpi)+1);
</script>
|
верный результат - 15". Если же у пользователя будет включен размер 800х600, получим 12". Ошибка будет возникать и при смене разрешения. Например, при 72dpi, для 15" монитора верный результат будет получен при размере экрана 800х600, а при 1024х768 получим диагональ 19".
Плюс еще нужно учитывать пропорцию экрана, например, 22" могут быть у экрана с соотношением сторон 4:3, так и 16:10 или 16:9, а выглядеть в конечном итоге будет по разному. | |
|
|
|
|
|
|
|
для: sim5
(11.05.2008 в 08:12)
| | Да, вы правы.
"Разруха - она в головах" - http://www.artlebedev.ru/kovodstvo/paragraphs/70/ :-) | |
|
|
|
|
|
|
|
для: PAT
(11.05.2008 в 10:19)
| | А вот как вы думаете, знает ли компьютер, какое разрешение (в точках на дюйм) в данный момент на экране? Не имеет ни малейшего представления. Более того, компьютер не может об этом спросить ни у монитора, ни у графической карты. Потому что те тоже не знают.
Ну это неверное утверждение. Компьютеру как раз несложно это сделать, для этого есть WinAPI функции. | |
|
|
|