JavaScript. Подробное руководство, 6-е издание, стр. 7

<b>  var answer = confirm(&quot;Ready to move on?&quot;);</b>

<b>    // Если пользователь щелкнул на кнопке &quot;OK&quot;, заставить броузер загрузить новую страницу </b>

<b>    if (answer) window.location = &quot;</b><a href="http://google.com/"><b>http://google.com</b></a><b>&quot;;</b>

<b>  }</b>

<b>  // Запустить функцию, объявленную выше, через 1 минуту (60000 миллисекунд).</b>

<b>  setTimeout(moveon, 60000);</b>

<b>&lt;/script&gt;</b>

Обратите внимание, что примеры программного кода на клиентском JavaScript в этом разделе длиннее примеров на базовом языке, которые мы видели выше в этой главе. Эти примеры не предназначены для ввода в окне консоли Firebug (или в другом подобном инструменте). Однако вы можете вставлять их в HTML-файлы и затем запускать, открывая файлы в веб-броузере. Так, пример, приведенный выше, является самостоятельным HTML-файлом.

Глава 15 «Работа с документами» переходит к исследованию фактической работы, выполняемой с помощью JavaScript на стороне клиента, - управлению содержимым документа HTML. Она покажет вам, как выбирать определенные элементы HTML из документов, как устанавливать HTML-атрибуты этих элементов, как изменять содержимое элементов и как добавлять в документ новые элементы. Следующая функция демонстрирует некоторые из простейших приемов поиска и изменения элементов документа:

<b>// Выводит сообщение в специальной области для отладочных сообщений внутри документа.</b>

<b>// Если документ не содержит такой области, она создается.</b>

<b>function debug(msg) {</b>

<b>  // Отыскать область для отладочных сообщений в документе, поиск по HTML-атрибуту id </b>

<b>  var log = document.getElementByld(&quot;debuglog&quot;);</b>

<b>  // Если элемент с атрибутом id=&quot;debuglog&quot; отсутствует, создать его.</b>

<b>  if (!log) {</b>

<b>    log = document.createElementC'div&quot;); // Создать элемент &lt;div&gt;</b>

<b>    log.id = &quot;debuglog&quot;; // Установить атрибут id </b>

<b>    log.innerHTML = &quot;&lt;h1&gt;Debug Log&lt;/h1&gt;&quot;; // Начальное содержимое</b>

<b>    document.body.appendChild(log); // Добавить в конец документа</b>

<b>  }</b>

<b>  // Теперь обернуть сообщение в теги &lt;рге&gt; и добавить в элемент log</b>

<b>  var рге = document.createElement(&quot;pre&quot;); // Создать тег &lt;рге&gt;</b>

<b>  var text = document.createTextNode(msg); // Обернуть msg в текстовый узел</b>

<b>  pre.appendChild(text); // Добавить текст в тег &lt;рге&gt;</b>

<b>  log.appendChild(pre);  // Добавить &lt;рге&gt; в элемент log</b>

<b>}</b>

Глава 15 демонстрирует, как с помощью JavaScript можно управлять HTML-элементами, которые определяют содержимое веб-страниц. Глава 16 «Каскадные таблицы стилей» демонстрирует, как с помощью JavaScript можно управлять каскадными таблицами стилей CSS, определяющими представление содержимого. Чаще всего для этой цели используется атрибут HTML-элементов style или class:

<b>function hide(e, reflow) { // Скрывает элемент e, изменяя его стиль </b>

<b>  if (reflow) {// Если 2-й аргумент true,</b>

<b>    e.style.display = &quot;none&quot; // скрыть элемент и использовать</b>

<b>  } // занимаемое им место</b>

<b>  else { // Иначе</b>

<b>    e.style.visibility = &quot;hidden&quot;// сделать е невидимым, но оставить</b>

<b>  } // занимаемое им место пустым</b>

<b>}</b>

<b>function highlight(е) { // Выделяет е, устанавливая класс CSS </b>

<b>  // Просто добавляет или переопределяет HTML-атрибут class.</b>

<b>  // Предполагается, что таблица стилей CSS уже содержит определение класса &quot;hilite&quot; </b>

<b>  if (!е.className) </b>

<b>    e.className = &quot;hilite&quot;; </b>

<b>  else </b>

<b>    e.className += &quot; hilite&quot;;</b>

<b>}</b>

JavaScript позволяет не только управлять содержимым и оформлением HTML-документов в броузерах, но и определять поведение этих документов с помощью обработчиков событий. Обработчик событий - это функция JavaScript, которая регистрируется в броузере и вызывается броузером, когда возникает событие определенного типа. Таким событием может быть щелчок мышью или нажатие клавиши (или какое-то движение двумя пальцами на экране смартфона). Обработчик события может также вызываться броузером по окончании загрузки документа, при изменении размеров окна броузера или при вводе данных в элемент HTML-формы. Глава 17 «Обработка событий» описывает, как определять и регистрировать обработчики событий и как вызываются эти обработчики при появлении событий.

Простейший способ объявления обработчиков событий заключается в использовании HTML-атрибутов, имена которых начинаются с приставки «оп». Обработчик «onclick» особенно удобен при создании простых тестовых программ. Предположим, что вы сохранили функции debug() и hide(), представленные выше, в файлах с именами debug.js и hide.js. В этом случае можно было бы написать простой тестовый HTML-файл, использующий элементы <button> с атрибутами onclick, определяющими обработчики событий:

<b>&lt;script src=&quot;debug.js&quot;&gt;&lt;/script&gt;</b>