- •4.2.1. Повторные и опущенные объявления
- •Типы данных
- •3.1.3. Литералы вещественных чисел
- •3.1.6. Специальные числовые значения
- •3.2.2. Управляющие последовательности в строковых литералах
- •3.3. Логические значения
- •3.4.1. Функциональные литералы
- •3.6. Массивы
- •7.6.1. Добавление новых элементов в массив
- •7.7.9. Методы toString() и toLocaleString()
- •7.7.10. Дополнительные методы массивов
- •11.1.2. Классы символов
- •11.1.3. Повторение
- •11.1.4. Альтернативы, группировка и ссылки
- •11.1.6. Флаги
- •1 Здесь функция alert() используется просто для отображения информации: она
- •13.2.2. Сценарии во внешних файлах
- •13.3. Обработчики событий в html
- •13.5.5. Объект Window как контекст исполнения
- •15.2. Свойства объекта Document
- •1 Модель dom может также использоваться для представления xmLдокументов,
- •15.4.2. Узлы
- •15.4.2.1. Типы узлов
- •1 Стандарт dom определяет интерфейсы, а не классы. Те, кто не знаком с термином
- •15.4.2.2. Атрибуты
- •15.5. Обход документа
- •1 Во многих сложных dhtmLэффектах используются также приемы обработки
- •16.1. Обзор css
- •1 Эрик Мейер «css – каскадные таблицы стилей. Подробное руководство», 3е из
- •16.1.1. Применение правил стиля к элементам документа
- •16.2.1. Ключ к dhtml: абсолютное позиционирование
- •16.2.3. Определение положения и размеров элемента
- •16.3.2. Работа со свойствами стилей
- •300 Пикселов:
- •17.1.1.1. Аппаратнозависимые и аппаратнонезависимые события
- •17.1.2. Обработчики событий как атрибуты
- •1 Подробное описание htmLформ, включая пример проверки правильности за
- •17.2.6.3. Интерфейс MouseEvent
- •17.5. События клавиатуры
- •17.5.1. Типы событий клавиатуры
- •17.5. События клавиатуры 441
13.3. Обработчики событий в html
JavaScriptкод, расположенный в теге <script>, исполняется один раз, когда со
держащий его HTMLфайл считывается в вебброузер. Такие статические сцена
рии не могут динамически реагировать на действия пользователя. В динамиче
ских программах определяются обработчики событий, автоматически вызывае
мые вебброузером при возникновении определенных событий, например при
щелчке на кнопке в форме. События в клиентском языке JavaScript генерируются
HTMLобъектами (такими как кнопки), поэтому обработчики событий определя
ются как атрибуты этих объектов. Например, чтобы задать обработчик события,
который вызывается, когда пользователь щелкает на флажке в форме, код обра
ботчика указывается в качестве атрибута HTMLтега, определяющего флажок:
<input type="checkbox" name="options" value="gifwrap"
onclick="gifwrap = this.checked;"
>
Здесь нас интересует атрибут onclick. Строковое значение атрибута onclick мо
жет содержать одну или несколько JavaScriptинструкций. Если имеется не
сколько инструкций, они должны отделяться друг от друга точками с запятой.
Когда с флажком происходит указанное событие (в данном случае щелчок мы
ши), исполняется JavaScriptкод, указанный в этой строке.
В определение обработчика события можно включать любое количество Java
Scriptинструкций, но обычно для обработки события в атрибут вставляется вызов13.3. Обработчики событий в HTML 265
функции, которая определена гденибудь в другом месте между тегами <script>
и </script>. Это позволяет держать большую часть JavaScriptкода внутри тегов
<script> и ограничивает степень взаимопроникновения JavaScriptи HTMLкода.
Примечательно, что атрибуты обработчиков событий являются не единствен
ным местом определения JavaScriptобработчиков. В главе 17 показано, что су
ществует возможность определять обработчики событий для HTMLэлементов,
располагая JavaScriptкод внутри тега <script>. Некоторые JavaScriptразработ
чики призывают отказаться от использования HTMLатрибутов для определе
ния обработчиков событий, мотивируя это требование парадигмой ненавязчиво
го JavaScriptкода, в соответствии с которой необходимо полное отделение со
держимого от поведения. Согласно такому стилю программирования весь Java
Scriptкод должен размещаться во внешних файлах, ссылки на которые должны
оформляться в виде атрибутов src тегов <script>. Этот внешний JavaScriptкод
во время своей работы может определить любые обработчики событий, какие
только потребуются.
Намного более подробно события и их обработчики обсуждаются в главе 17, но
многие примеры их использования мы уже неоднократно рассматривали. В гла
ве 17 содержится полный список обработчиков событий, а наиболее распростра
ненные из них мы перечислим здесь:
onclick
Этот обработчик поддерживается всеми элементами форм, подобными кноп
кам, а также тегами <a> и <area>. Он вызывается, когда пользователь щелкает
на элементе. Если обработчик onclick возвращает false, броузер не выполняет
стандартное действие, связанное с элементом или ссылкой, например, не от
крывает ссылку (для тега <a>) или не передает данные формы (для кнопки
Submit).
onmousedown, onmouseup
Эти два обработчика во многом похожи на onclick, но вызываются по отдель
ности, когда пользователь нажимает и отпускает кнопку мыши. Большинст
во элементов документа поддерживают эти обработчики.
onmouseover, onmouseout
Эти два обработчика события вызываются, когда указатель мыши соответст
венно оказывается на элементе документа или покидает его.
onchange
Этот обработчик события поддерживается тегами <input>, <select> и <text
area>. Он вызывается, когда пользователь изменяет значение, отображаемое
элементом, а затем перемещает фокус с помощью клавиши табуляции либо
другим способом.
onload
Этот обработчик событий может использоваться в теге <body>. Данное событие
возникает, когда документ и все содержимое из внешних файлов (например,
изображения) полностью загружено. Обработчик onload часто используется
для запуска программного кода, который манипулирует содержимым доку
мента, т. к. это событие свидетельствует о том, что документ достиг состоя
ния готовности и его можно изменять.266 Глава 13. JavaScript в веб*броузерах
Реализацию обработчиков событий можно найти в интерактивном сценарии вы
плат по закладной в примере 1.3. HTMLформа в этом примере содержит не
сколько атрибутов обработчиков событий. Тело этих обработчиков просто: они
лишь вызывают функцию calculate(), определенную в другом месте внутри тега
<script>.