"Информатика (базовый и углублённый уровни) (в 2 частях)", Поляков К.Ю., Еремин Е.А.
Динамический HTML, или DHTML, позволяет менять содержимое и оформление веб-страницы прямо во время её работы. Для этого вместе используют HTML, CSS, JavaScript и объектную модель документа (DOM). HTML задаёт структуру, CSS — внешний вид, а сценарии JavaScript реагируют на действия пользователя и обращаются к элементам через DOM. Так можно, например, менять заголовок после щелчка или показывать дополнительный текст без повторной загрузки страницы.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Динамический HTML (DHTML) — совокупность средств HTML, CSS, JavaScript и объектной модели документа, с помощью которых страницу можно менять во время её работы. Это не отдельная технология с собственным языком: результат появляется благодаря взаимодействию разметки, оформления и сценариев. DHTML нужен, чтобы сайт реагировал на пользователя, а не только показывал заранее заданный текст.
Объектная модель документа (DOM) — представление HTML-документа в виде дерева объектов, которое создаёт браузер. Каждый элемент, например заголовок или кнопка, становится доступным сценарию объектом. Благодаря DOM программа может находить нужные части страницы и менять их, не переписывая документ целиком.
Событие — действие или изменение, на которое веб-страница может отреагировать. Это может быть щелчок мышью, наведение указателя или завершение загрузки документа. События позволяют запускать нужное поведение именно тогда, когда оно требуется.
Обработчик события — фрагмент JavaScript-кода, который запускается в ответ на определённое событие. Например, обработчик щелчка может изменить текст заголовка. Он нужен, чтобы связать действие пользователя с конкретным результатом на странице.
Сначала браузер читает HTML-код и строит по нему DOM — дерево объектов, отражающее структуру документа. Например, абзац внутри основного блока становится объектом, связанным с этим блоком. Такая модель нужна потому, что сценарий не работает с текстовым файлом как с набором символов: он обращается к понятным браузеру объектам. CSS применяется к элементам и задаёт, как они выглядят.
В DHTML у каждой технологии своя роль. HTML описывает, какие элементы есть на странице, поскольку без структуры браузеру нечего было бы отображать. CSS определяет цвет, размеры и другие свойства внешнего вида, отделяя оформление от содержимого. JavaScript задаёт логику и реакцию на действия, а DOM служит способом найти элемент и обратиться к нему. Поэтому динамический эффект получается не из одной команды, а из согласованной работы этих средств.
Интерактивная страница действует по цепочке: браузер показывает документ, происходит событие, запускается связанный с ним обработчик, затем обработчик выполняет нужные действия. Например, при щелчке по кнопке браузер сообщает о событии, а JavaScript-код реагирует на него. Такая последовательность позволяет странице отвечать на действия в подходящий момент, а не выполнять изменение заранее. Если событие не произошло, соответствующий обработчик обычно не запускается.
Чтобы поменять страницу, сценарий сначала находит нужный элемент через DOM, а затем изменяет его содержимое или свойства оформления. Так можно заменить текст абзаца, задать другой цвет или сделать блок видимым. Изменения происходят в текущем документе, который хранится в памяти браузера, поэтому исходный HTML-файл на сервере не переписывается. Повторная загрузка страницы для таких изменений обычно не нужна.
Выполнение сценария зависит от того, когда браузер создал элементы и поддерживает ли он используемые средства. Если код обращается к элементу слишком рано, такого объекта в DOM ещё может не быть, и найти его не получится. По этой причине сценарий запускают после создания нужной части документа или связывают его выполнение с подходящим событием. Даже правильно написанный код должен использовать возможности, которые поддерживает браузер пользователя.
Таблица показывает, какую задачу решает каждый компонент и как он участвует в изменении страницы. Пользуйся ею, чтобы определить, чего не хватает для конкретного эффекта: структуры, оформления, логики реакции или доступа к элементу. В готовом примере обычно взаимодействуют сразу несколько средств.
| Средство | За что отвечает | Пример применения |
|---|---|---|
| HTML | Структура и содержимое страницы | Размещение заголовка и кнопки |
| CSS | Внешний вид элементов | Изменение цвета или размера текста |
| JavaScript | Логика и обработка событий | Реакция на щелчок |
| DOM | Доступ к элементам документа и их изменение | Замена текста в абзаце |
Нужно связать щелчок с действием, которое заменит содержимое заголовка. Для этого заголовку и кнопке необходимо соответствовать элементам в HTML, а сценарий должен получить доступ к заголовку через DOM. Сначала определим, что именно будет инициировать изменение и какой объект должен измениться.
Ответ: при каждом щелчке обработчик находит объект заголовка в DOM и меняет его содержимое без перезагрузки документа. Если заголовок не найден, следует проверить его идентификатор и момент запуска сценария.
Здесь нужны два разных момента реакции: указатель входит в область абзаца и покидает её. Поэтому для одного элемента используют событие наведения и событие ухода, задавая каждому подходящее изменение стиля. Возврат исходного цвета лучше выполнять явно, чтобы внешний вид после ухода был предсказуемым.
Ответ: цвет меняется, когда указатель оказывается над абзацем, и возвращается к исходному при уходе. Если он не восстанавливается, нужно проверить обработчик ухода и значение цвета, которое он задаёт.
Кнопка должна менять видимость блока в зависимости от его текущего состояния, поэтому обработчику нужно различать два случая. Если блок скрыт, щелчок должен показать его; если виден — скрыть. Такое поведение называют переключением состояния: одно и то же действие приводит к чередованию двух вариантов.
Ответ: один обработчик переключает видимость блока между показанным и скрытым состояниями. Если переключение не работает, проверьте, что обработчик связан с кнопкой, а сценарий находит именно нужный блок.
Считать DHTML отдельным языком программирования. Такое впечатление может возникнуть из-за отдельного названия, но DHTML объединяет HTML, CSS, JavaScript и DOM. Если описываете решение, проверьте, какую роль играет каждый компонент, вместо того чтобы искать «команду DHTML». Тогда станет ясно, что структуру задаёт разметка, а поведение — сценарий.
Путать изменение DOM с изменением исходного HTML-файла. На экране содержимое действительно меняется, поэтому легко решить, что переписался файл сайта. На самом деле сценарий меняет документ в памяти браузера, а серверный файл остаётся прежним. Проверить себя можно, перезагрузив страницу: если новое состояние не сохранено отдельно, исходный вариант обычно появится снова.
Забывать связать обработчик с событием и элементом. Код может быть написан верно, но не запускаться, если не указано, какое событие его вызывает и к какому элементу оно относится. Ошибку допускают, когда рассматривают обработчик отдельно от кнопки или другого объекта. Проверьте, что щелчок, наведение или нужное событие действительно связано с обработчиком на правильном элементе.
Обращаться к элементу до его появления в DOM. Если сценарий выполняется слишком рано, браузер ещё не создал нужный объект, поэтому поиск его не находит. Причина часто в расположении или времени запуска кода, а не в самом элементе. Для проверки убедитесь, что обращение выполняется после создания элемента и что способ поиска соответствует его идентификатору.
Для работы с DHTML нужны основы HTML-разметки: без них нельзя создать элементы страницы, к которым будет обращаться сценарий. Знание CSS помогает задавать исходное оформление и понимать, какие свойства можно изменять. Синтаксис JavaScript необходим, чтобы описать обработчики и последовательность действий; без него события не приведут к нужной реакции.
DOM и события становятся основой интерактивных веб-страниц. Понимание дерева объектов помогает находить элементы и управлять ими, а знание событий — выбирать момент для запуска кода. Эти понятия пригодятся при дальнейшем изучении веб-программирования и создании интерфейсов, реагирующих на пользователя.
Чем динамический HTML отличается от обычного HTML?
Обычная HTML-разметка задаёт структуру и исходное содержимое страницы. DHTML объединяет её с CSS, JavaScript и DOM, поэтому страница может изменяться во время работы и реагировать на действия пользователя.
Является ли DHTML отдельным языком программирования?
Нет, DHTML — не отдельный язык, а сочетание нескольких веб-технологий. В его работе участвуют HTML, CSS, JavaScript и DOM.
Что такое DOM и зачем он нужен?
DOM — объектная модель документа: представление HTML-страницы в виде дерева объектов. Через неё JavaScript находит элементы и меняет их содержимое или оформление.
Какие действия пользователя могут вызвать событие?
Событие может возникнуть, например, при щелчке мышью, наведении указателя или уходе указателя с элемента. Событиями также могут быть загрузка документа и другие изменения, которые браузер способен обнаружить.
Почему сценарий может не найти элемент страницы?
Возможно, сценарий выполняется раньше, чем браузер создал нужный элемент в DOM. Также в коде может быть неверно указан способ поиска или идентификатор элемента.
§ 32. Динамический HTML