Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Диагональ монитора
 
 автор: Yustys   (10.05.2008 в 14:34)   письмо автору
 
 

Всем известно, что для корректной подстройки сайта под разные мониторы посетителей, достаточно воспользоваться несложным скриптом на ява скрипт в сочетании с аяксом, но качество и корректность отображения сайта на разных мониках зависит не только от разрешения, но и от диагонали - на 15 и 19 дюймовых экранах сайт смотрится по разному.
ВОПРОС: Как и какими средствами можно определить диагональ монитора посетителя?

   
 
 автор: sim5   (10.05.2008 в 14:49)   письмо автору
 
   для: Yustys   (10.05.2008 в 14:34)
 

Никакими, браузер такой информации не выдает. Эту информацию можно взять только их реестра, и то не всегда она может быть в явном виде. Если же вы решив теорему Пифагора, найдете диагональ, то она у вас будет одинакова для всех мониторов при одном и том же разрешении, так как размеры катетов будут естественно одни и те же, например, 1024 и 768.

   
 
 автор: PAT   (10.05.2008 в 16:58)   письмо автору
 
   для: 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).

   
 
 автор: sim5   (10.05.2008 в 17:50)   письмо автору
 
   для: PAT   (10.05.2008 в 16:58)
 

Интересно, а ведь действительно можно. Только получается ошибка на 1 дюйм. Вернее, для ЭЛТ это будет диагональ рабочей области монитора.

   
 
 автор: sim5   (11.05.2008 в 08:12)   письмо автору
 
   для: 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, а выглядеть в конечном итоге будет по разному.

   
 
 автор: PAT   (11.05.2008 в 10:19)   письмо автору
 
   для: sim5   (11.05.2008 в 08:12)
 

Да, вы правы.
"Разруха - она в головах" - http://www.artlebedev.ru/kovodstvo/paragraphs/70/ :-)

   
 
 автор: sim5   (11.05.2008 в 10:28)   письмо автору
 
   для: PAT   (11.05.2008 в 10:19)
 

А вот как вы думаете, знает ли компьютер, какое разрешение (в точках на дюйм) в данный момент на экране? Не имеет ни малейшего представления. Более того, компьютер не может об этом спросить ни у монитора, ни у графической карты. Потому что те тоже не знают.

Ну это неверное утверждение. Компьютеру как раз несложно это сделать, для этого есть WinAPI функции.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования