SE@RCHER
SE@RCHER
Библиотека JAVASCRIPT
03www.ru
Библиотека JAVASCRIPT
03www.ru
Библиотека JAVASCRIPT
03www.ru
Золотая библиотека JAVASCRIPT
1997
примеры библиотеки javascriptПОЛЕЗНЫЕ СОВЕТЫ JAVASCRIPT + CSS
примеры библиотеки javascriptПОЛЕЗНЫЕ СОВЕТЫ JAVASCRIPT + CSS
примеры библиотеки javascriptПОЛЕЗНЫЕ СОВЕТЫ JAVASCRIPT + CSS

Какой DOCTYPE выбрать

Вы написали правильный стандартный XHTML код и стандартный CSS. Вы воспользовались стандартной спецификацией для работы с DOM (Document Object Model), чтобы управлять динамическими элементами на странице. И все-таки, в броузерах, которые казалось бы сделаны с соблюдением именно этих стандартов, ваш сайт не работает. Скорей всего, ошибка кроется в неправильном заголовке 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">

или с XML объявлением

<?xml version="1.0" encoding="UTF-8"?> <!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">

В соответствии со стандартами HTML страницы должны содерждать определение типа документа (DOCTYPE). DOCTYPE сообщает валидатору версию HTML для проверки синтаксиса.

Различные варианты указания DOCTYPE могут привести к различным вариантам отображения страницы в браузерах.

Наиболее часто используемые варианты DOCTYPE:


Строгий (Strict): не содержит элементов, помеченных как «устаревшие» или «не одобряемые» (deprecated).
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">


Переходный (Transitional): содержит устаревшие теги в целях совместимости и упрощения перехода со старых версий HTML. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

XHTML 1.0 Strict doctype без XML объявления
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

XHTML 1.0 Strict doctype вместе с XML объявлением
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

С фреймами (Frameset): аналогичен переходному, но содержит также теги для создания наборов фреймов.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

Различное отображение HTML документов в браузере зависит от объявленного Doctype

При использовании одних и тех же HTML-тегов в старых кривых браузерах и современных, придерживающихся стандартов (Mozilla и браузеры на его основе, Mac IE 5, Windows IE 6, Safari, Opera 7+ и Konqueror 3.2) можно обнаружить два основных режима отображения web-страницы. В одном случае браузер пытается представить страницу в соответствии с рекомендациям CSS и (X)HTML. В другом случае отображение страницы происходит как в старых, далеких от стандартов браузерах. В Mozilla эти два состояния известны как "the Standards mode" и "the Quirks mode", т.е. как стандартный режим и неопределенный соответственно.

Кривое и нестандартное поведение старых ущербных браузеров, таких как Netscape Navigator 4.x и IE 5 для Windows называется "quirks". Иногда страница бывает написана так, что ее разметка изначально некорректна.

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

Quirks Mode - Неопределенное состояние

При Quirks Mode в браузерах нарушаются рекомендации W3C для обеспечения нормального отображения страниц. Для разных браузеров существуют различные варианты совместимости с предыдущими версиями. Следовательно, "Quirks mode" не единственная цель. Например, Mozilla берет свое начало с Netscape 4.x, а Windows IE 6 с Windows IE 5.

Собственно цель Quirks mode - корректное отображение страниц, написанных для старых браузеров. При создании новых, современных страниц следует выполнять требования стандартов и рекомендаций (CSS 2.1 в частности) и придерживаться Standards mode.

Standards Mode - Соответствует стандартам

При Standards Mode современные браузеры должны одинаково правильно представлять соответствующую стандартам страницу.

Almost Standards Mode - Почти соответствует стандартам

В браузерах Mozilla, Safari и Opera 7.5 еще существует третий вариант "the Almost Standards mode" (почти соответствующий стандартам), который не достаточно строго следует рекомендациям W3C. У Mac IE 5, Windows IE 6, Opera до 7.5 и Konqueror отсутствует Almost Standards mode, потому что они и так не могут работать в соответствии с CSS2, поэтому они будут находиться в этом случае в Standards modes. Фактически, их Standards modes это Almost Standards mode браузера Mozilla, а не полноценный Standards modes. Важно помнить: браузеры имеют одинаковые основные состояния, но даже при одинаковых состояния они все равно работают по-разному.

Старые браузеры кое как еще обрабатывают нестандартные теги. В современных браузерах некорректный HTML приведет и к неправильной работе таблиц стилей и скриптов.

Формирование логически правильного дерева документа из некорректной разметки потребует немало изворотливости и не факт, что результат будет таким, как задумывалось, в отличие от применения чистого и стандартного HTML. Раньше, применением различных трюков удавалось достичь более-менее схожего отображения страниц в разных браузерах, поэтому со временем, подавляющее большинство документов text/html в интернете оказались синтаксически неправильными, потому что они не следовали единому стандарту.

Некоторые люди ошибочно считают Standards mode режимом строгого анализа, при этом неверно предположение, что браузеры будут вынуждены строго выполнять только правила синтаксиса HTML, которые они будут использовать для оценки корректности разметки. Это не верно. Браузеры продолжают пытаться правильно обрабатывать любой код, даже в случае Standards mode разметки. (В 2000 году, до релиза Netscape 6 анализатор Mozilla действовал только по правилам строго синтаксиса HTML. Но, как оказалось, стало невозможным корректно представлять созданные ранее документы и от этого пришлось отказаться.)

Другое заблуждение связано с XHTML анализом. Некоторые люди думают, что документ XHTML как-то иначе анализируется браузером. Это не так. XHTML документы обслуживаются как text/html и анализируются так же, как и HTML. В браузерах, XHTML обслуживается как text/html, но только с учетом особенностей синтаксиса, А вот документы, которые соответствуют типу контента XML рассматриваются уже иначе, именно как XML.

Исследование Doctype

Mozilla, Mac IE 5, Windows IE 6, Safari и Opera 7+ используют doctype для того, чтобы оценить как рассматривать разметку документа text/html. Этот метод основан на определении объявления типа документа (или его отсутствия) в начале HTML документа. (Документы, которые используют определение типа контента XML, всегда рассматриваются в Standards mode.)

Объявление типа документа (doctype) включает название (характерное для распознавания) корневого элемента и ссылку на DTD (document type definition - определение типа документа), которое в свою очередь, содержит информацию о синтаксических правилах для документа. (Теоретически, весь DTD может быть вставлен в объявление типа документа, но на практике используется лишь ссылка на него.) В спецификации HTML объявление типа документа содержит информацию о версии HTML. Отсутствие объявления типа документа и информации о его версии не позволяет правильно обрабатывать этот документ.

Ни спецификация HTML 4.01, ни ISO 8879 (SGML) не говорят что-либо об использовании объявления типа документа как о переключателе режимов отображения разметки. Пренебрежение к doctype основано на его несоблюдении, а также на том, что большинство устаревших нестандартных документов не включают объявление типа документа, либо ссылаются на старые DTD.

Типичное объявление типа документа содержит строку (все ее части разделены пробелами): "<!DOCTYPE", общий идентификатор корневого элемента ("HTML"), строку "PUBLIC", общий идентификатор DTD в кавычках, может быть системный идентификатор (URL) того же DTD и символ ">". Объявление типа документа должно размещаться перед начальным тегом корневого элемента.

В приведенной таблице (Q) Quirks Mode, (S) Standards Mode и (A) Almost Standards Mode

В шапке таблицы используются следующие соткращения:

NS6
Mozilla 0.6…0.9.4 и Netscape 6.0…6.2.3
Old Moz
Mozilla 0.9.5 вплоть до 1.1 alpha и Mozilla 1.0
Moz и Safari
Mozilla 1.0.1, Mozilla 1.1 beta и выше, Firefox и Netscape 7, Safari v73 aka. 0.9 вплоть до Safari v125.11 aka. 1.2.4
Opera 7.5
Opera 7.5
Opera 7.10
Opera 7.107.23
IE 6 и Opera 7.0
Windows IE 6 and Opera 7.0…7.03
Mac IE 5
Mac IE 5.0…5.2.3
Konq 3.2
Konqueror 3.2.2…3.3 (вероятно также 3.1…3.2.1; не подтверждено)
Doctype NS6 Old Moz Moz и Safari Opera 7.5 Opera 7.10 IE 6 и Opera 7.0 Mac IE 5 Konq 3.2
Не объявлен Q Q Q Q Q Q Q Q
До HTML 4.0 doctype
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
Q Q Q Q Q Q Q Q
HTML 4.0 Strict doctype без URL
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
S S S S A A A A
HTML 4.01 Strict doctype без URL
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
S S S S A A Q A
HTML 4.0 Strict doctype с URL
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/html4/strict.dtd">
S S S S A A A A
HTML 4.01 Strict doctype с URL
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
S S S S A A A A
HTML 4.0 Transitional doctype без URL
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
Q Q Q Q Q Q Q Q
HTML 4.01 Transitional doctype без URL
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
Q Q Q Q Q Q Q Q
HTML 4.01 Transitional doctype с URL http://www.w3.org/TR/html4/loose.dtd
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
S S A A A A A Q
HTML 4.01 Transitional doctype с URL http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
Q S A A A A A Q
HTML 4.0 Transitional doctype с URL
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
Q Q Q A A A A Q
XHTML 1.0 Strict doctype без XML объявления
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
S S S S A A A A
XHTML 1.0 Transitional doctype без XML объявления
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
S S A A A A A Q
XHTML 1.0 Strict doctype вместе с XML объявлением
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
S S S S A Q A Q
XHTML 1.0 Transitional doctype с XML объявлением
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
S S A A A Q A Q
ISO HTML версия 2000 doctype, краткая форма
<!DOCTYPE HTML PUBLIC "ISO/IEC 15445:2000//DTD HTML//EN">
Q S S Q Q Q Q Q
ISO HTML версия 2000 doctype, длинная форма
<!DOCTYPE HTML PUBLIC "ISO/IEC 15445:2000//DTD HyperText Markup Language//EN">
Q S S S A A A Q
ISO HTML версия 1999 doctype, краткая форма
<!DOCTYPE HTML PUBLIC "ISO/IEC 15445:1999//DTD HTML//EN">
S S S Q Q Q Q Q
ISO HTML версия 1999 doctype, длинная форма
<!DOCTYPE HTML PUBLIC "ISO/IEC 15445:1999//DTD HyperText Markup Language//EN">
S S S S A A A Q


Для начинающих советуется использовать "переходный" доктайп HTML 4.01 Transitional.
Он учитывает все стандарты, но не отменяет устаревшие теги типа <font> и <center> и т.п.

Выглядит он так:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
обязательно использовать именно такую строчку, не указание ссылки на .dtd считается ошибкой(!) и отображается "по старинке"!

Для тех кто со всеми стандартами знаком рекомендуется вариант Strict (строгий), верстать им - признак хорошего тона.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
В данном варианте допускается не использование ссылки на .dtd, но всё таки хороший тон оставить ссылку .

Новый стандарт HTML5 пока что в состоянии черновика, и официально не должен поддерживаться, хотя поддерживается даже в IE6.
Выглядит он так:

<!DOCTYPE html>
Вот так вот просто, без всяких указаний DTD (document type declaration).

Крис Уилсон (Chris Wilson), архитектор платформы Internet Explorer, поделился с посетителями мероприятия информацией о том, что Microsoft планирует призвать создателей Web-сайтов к приведению сайтов к стандартам при разработке сайтов под IE 8.0. «Пять лет назад ни один из 200 самых популярных Web-сайтов не прибегал к использованию стандартов» — сказал Уилсон.
«Сегодня стандартизированы лишь половина из этих 200 сайтов».
Уилсон признал, что пока не до конца понятно, какую форму примет эта оптимизация.
Но обращение к авторам сайтов с просьбой оптимизировать сайт «даст возможность делать восхитительные вещи».


Описание

Элемент <!DOCTYPE> предназначен для указания типа текущего документа — DTD (document type definition, описание типа документа). Это необходимо, чтобы браузер понимал, как следует интерпретировать текущую веб-страницу, поскольку HTML существует в нескольких версиях, кроме того, имеется XHTML (EXtensible HyperText Markup Language, расширенный язык разметки гипертекста), похожий на HTML, но различающийся с ним по синтаксису. Чтобы браузер «не путался» и понимал, согласно какому стандарту отображать веб-страницу и необходимо в первой строке кода задавать <!DOCTYPE>.

Существует несколько видов <!DOCTYPE>, они различаются в зависимости от версии языка, на которого ориентированы. В табл. 1. приведены основные типы документов с их описанием.

Табл. 1. Допустимые DTD
DOCTYPE Описание
HTML 4.01
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> Строгий синтаксис HTML.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> Переходный синтаксис HTML.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> В HTML-документе применяются фреймы.
HTML 5
<!DOCTYPE html> Для всех документов.
XHTML 1.0
<!DOCTYPE html PUBLIC  "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> Строгий синтаксис XHTML.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> Переходный синтаксис XHTML.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> Документ написан на XHTML и содержит фреймы.
XHTML 1.1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> Разработчики XHTML 1.1 предполагают, что он постепенно вытеснит HTML. Никакого деления на виды это определение не имеет, синтаксис один и подчиняется четким правилам.

Синтаксис

<!DOCTYPE [Элемент верхнего уровня] [Публичность] "[Регистрация]//[Организация]//[Тип] [Имя]//[Язык]" "[URL]">

Параметры

Элемент верхнего уровня — указывает элемент верхнего уровня в документе, для HTML это тег <html>.

Публичность — объект является публичным (значение PUBLIC) или системным ресурсом (значение SYSTEM), например, таким как локальный файл. Для HTML/XHTML указывается значение PUBLIC.

Регистрация — сообщает, что разработчик DTD зарегистрирован в международной организации по стандартизации (International Organization for Standardization, ISO). Принимает одно из двух значений: плюс (+) — разработчик зарегистрирован в ISO и - (минус) — разработчик не зарегистрирован. Для W3C значение ставится «-».

Организация — уникальное название организации, разработавшей DTD. Официально HTML/XHTML публикует W3C, это название и пишется в <!DOCTYPE>.

Тип — тип описываемого документа. Для HTML/XHTML значение указывается DTD.

Имя — уникальное имя документа для описания DTD.

Язык — язык, на котором написан текст для описания объекта. Содержит две буквы, пишется в верхнем регистре. Для документа HTML/XHTML указывается английский язык (EN).

URL — адрес документа с DTD.

Закрывающий тег

Не требуется.

Пример. Использование <!DOCTYPE>

HTML 4.01IE 6IE 7IE 8Cr 5Op 10Sa 5Fx 3.6

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head>
   <title>!DOCTYPE</title>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 </head>
 <body> 

  <p>Разум — это Будда, а прекращение умозрительного мышления — это путь. 
  Перестав мыслить понятиями и размышлять о путях существования и небытия, 
  о душе и плоти, о пассивном и активном и о других подобных вещах, 
  начинаешь осознавать, что разум — это Будда, 
  что Будда — это сущность разума, 
  и что разум подобен бесконечности.</p>

 </body> 
</html>

Браузеры

Internet Explorer 6 требует, чтобы <!DOCTYPE> стоял обязательно в первой строке кода. В противном случае браузер переходит в режим совместимости (quirk mode).

Хотя значение URL является не обязательным, браузеры при его отсутствии могут перейти в режим совместимости, поэтому всегда указывайте полный путь к DTD-файлу