О правилах хорошего тона по отношению к браузерам
Интернет и все связанные с ним технологии непрерывно развиваются. Появляются новые браузеры. Как обеспечить, чтобы сделанный сегодня сайт правильно отображался в будущем?
Ведь посетитель не очень обрадуется, если увидит сообщение: "Для просмотра сайта нужен браузер ххх версии ууу".
А стандарты как раз и предназначены для решения этой проблемы. В идеале по полю DOCTYPE любой браузер должен однозначно определить, как отображать данную страницу.
Кроме того, не стоит забывать, что сайт просматривают не только с помощью обычного браузера. На сайт могут заходить поисковые роботы, которые "видят" его текстовый вариант. Для людей с ограниченными возможностями существуют программы чтения с экрана, которые должны не только выбрать нужную информацию, но и прочитать её в правильном порядке. Наконец есть устройства с "ограниченными возможностями" (КПК, телефоны), их браузеры также должны корректно отображать сайт.
При таком количестве разнообразных устройств общие стандарты, пожалуй, единственный способ обеспечить их согласованную работу.
Что такое DOCTYPE? Это способ указать браузеру, как правильно отображать документ и по какой схеме.
Существует много версий HTML, к примеру: HTML 4.01 Strict, HTML 4.01 Transitional, XHTML 1.0 Strict и множество других. DOCTYPE указывает браузеру структуру, элементы и их атрибуты для каждой версии HTML.
Указывание DOCTYPE критично, так как при его отсутствии браузер попытается обработать и отобразить документ так, как он считает нужным, а не так, как этого хотите вы и/или требуют стандарты. Ни о какой валидации, соответственно, и речи быть не может. Без DOCTYPE можно провести часы, пытаясь заставить браузер отобразить то, что вам нужно, и не добиться успеха.
Вот пример того, как должна выглядеть новорожденная страница:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Название страницы</title>
</head>
<body>
<p>Содержание страницы</p>
</body>
</html>
Наиболее распространенные виды DOCTYPE:
HTML 4.01 – Strict, Transitional, Frameset:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
XHTML 1.0 – Strict, Transitional, Frameset:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
XHTML 1.1 – DTD:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
HTML 5 [используется, но стандарт для него ещё не дописан]
<!DOCTYPE HTML>
Если вы будете пользоваться неполным тегом DOCTYPE, устаревшим его видом, или вообще забудете про него, броузер перейдет в "загадочный" режим и будет исходить из предположения, что вы писали код страницы с ошибками и вольно отступали от стандартов, т.е. так, как писали в конце 90-ых годов.
В этом режиме броузер попытается разобрать вашу страницу по правилам обратной совместимости и выведет на экран, например, CSS так, как его вывел бы Internet Explorer 4-ой версии, а DOM будет работать так, как он работал именно в этом броузере (IE переключается в свой старый DOM, а Mozilla и Netscape 6 переключается вообще в бог знает что).
Полный список всегда можно найти на W3C
Как вы могли заметить, есть 3 варианта стандартов: Strict, Transitional, Frameset.
ЗЫ. В процессе написания этой статьи зашел на сайт А.Лебедева и был неприятно удивлен тем, что этот человек категориски не указывает DOCTYPE (как минимум на своем сайте). Этим он подает очень нехороший пример тем, у кого пока ещё не сложилась четкая собственная позиция по этому поводу.