![](/user_photo/2706_HbeT2.jpg)
- •Оглавление
- •Введение Информация о курсе
- •Тенденции веба
- •Переход в веб
- •Введение в html Что такое html?
- •Элементы
- •Атрибуты
- •Базовая структура документа
- •Стандарт xhtml 1.0 Strict
- •Введение в css
- •Правила, свойства, значения
- •Простые селекторы
- •Универсальный селектор
- •Селектор по типу элемента
- •Селектор по id
- •Селектор по class
- •Подключение таблицы стилей к веб-документу
- •Элемент style
- •Атрибут style
- •Работа с цветом
- •Свойство color
- •Миф о «безопасных» цветах
- •Свойство background
- •Background-color — цвет фона
- •Background-image — фоновое изображение
- •Background-repeat — режим повторения изображения
- •Background-attachment — режим прокрутки (прикрепления) изображения
- •Background-position — положение изображения
- •Свойства border-top, border-right, border-bottom, border-left
- •Свойства border-width, border-color, border-style — параметры рамки
- •Собирательное свойство border — рамка
- •Элементы html Области элементов
- •Некоторые текстовые элементы
- •Заголовки
- •Элемент p — абзац
- •Элемент address — адресные данные
- •Атрибут title
- •Оформление гиперссылок
- •Псевдоклассы гиперссылок
- •Элементы dt и dd — главная и подчиненная части списка определений
- •Оформление списков
- •Элемент img — изображение
- •Атрибут src — адрес изображения
- •Атрибут alt — альтернативное описание
- •Атрибут style — оформление изображения
- •Атрибуты colspan и rowspan — объединение ячеек
- •Семантическая верстка и микроформаты
- •Оформление страниц при помощи css Оформление текста
- •Свойство font-family — гарнитура шрифта
- •Семейства шрифтов
- •Свойство font-size — кегль шрифта
- •Свойство font-style — управление наклоном
- •Свойство font-weight — насыщенность шрифта
- •Свойство font — управление шрифтом
- •Свойство text-transform — преобразование регистра
- •Свойство line-height — высота строки
- •Свойство vertical-align — вертикальное выравнивание
- •Вертикальное выравнивание для строчных элементов
- •Вертикальное выравнивание для ячеек таблиц
- •Область элемента
- •Свойство text-indent — управление абзацным отступом
- •Свойство padding — внутренний отступ
- •Свойство margin – внешний отступ
- •Верстка Что такое верстка?
- •С кем взаимодействует верстальщик?
- •Как создается веб-страница?
- •Процесс верстки
- •Пример верстки
- •Глава 6. Введение в JavaScript
- •Что такое JavaScript?
- •Типы данных
- •Переменные
- •Операторы
- •Инструкции
- •Конструкторы
- •Прототипы
- •Возможности расширения
- •Экземпляры и классы
- •Общие методы класса Object
- •Интеграция html и JavaScript
- •Элемент script
- •Интеграция в данные
- •Глава 7. Клиентский JavaScript Формы в html
- •Элемент form — собственно форма
- •Обработчики событий
- •Обработчики событий как атрибуты
- •Обработка событий без внедрения кода через атрибуты
- •Таймеры
- •Объект Location
- •Объект History
- •Объект Window
Обработчики событий
В предыдущей главе демонстрировалась возможность интеграции JavaScript-кода через обработчики событий. Этот способ очень распространен на практике, поэтому более подробно разберемся с возможностями обработки событий.
Обработчик события можно прикрепить к любому элементу, который является наследником элемента body, а также к самому элементу body. Существует большой набор различных обработчиков, но мы рассмотрим лишь наиболее распространенные и практически значимые. В табл. 7.2 приводится список и объяснение назначения различных обработчиков.
Таблица 7.2. Обработчики событий
Обработчик |
Событие |
onclick |
Клик по элменту |
onmousedown |
Нажата кнопка мыши |
onmouseup |
Отпущена кнопка мыши |
onmouseover |
Указатель мыши находится на элементе |
onmouseout |
Указатель мыши выходит за границы элемента |
onload |
Загрузка документа завершена |
onfocus |
Элемент получил фокус ввода |
onblur |
Элемент потерял фокус ввода |
onchange |
Элемент потерял фокус ввода и его значение с момента получения фокуса изменилось |
onkeydown |
Нажата клавиша |
onkeypress |
Клавиша нажата и отпущена |
onkeyup |
Клавиша отпущена |
Обработчики событий как атрибуты
Для задания кода обработки события можно записать этот код в значение атрибута, имя которого совпадает с названием обработчика. При использовании такого способа всегда стремятся записывать наиболее компактный код, а если обработчик является сложным, то его оформляют в виде функции, а затем вызывают ее в обработчике. Ниже приведен пример такого приема.
<form action=“post”>
<div>
Имя: <input type="text" onfocus=“func();”/>
</div>
<div>
<input type="submit" onclick=“alert(‘OK’);”/>
</div>
</form>
Обработка событий без внедрения кода через атрибуты
В клиентском JavaScript существует парадигма ненавязчивого JavaScript, которая говорит, что HTML-документ вообще не должен содержать JS-кода. Это удобно: можно полностью отделить технологии представления от технологий клиентской обработки при этом сохранив их интеграцию.
Но как связать обработчик события с определенным элементом, если не через атрибут? В клиентском JS специально для работы с документом существует объектная модель DOM (Document Object Model). Она позволяет получить доступ к любому элементу документа. Благодаря такой возможности к элементам можно свободно добавлять любые атрибуты, не изменяя при этом HTML-код.
Для управления обработчиками событий существуют специальные методы. Для регистрации обработчика применяется метод addEventListener. Он принимает три аргумента. Первый — строка, хранящая в себе имя события. В отличие от названия атрибута в коде HTML имя события записывается без приставки on, например, если в HTML атрибут называется onclick, то в здесь нужно использовать строку “click”.
Второй аргумент принимает функцию-обработчик, которая вызывается при возникновении указанного события. В качестве аргумента этой функции передается объект Event, содержащий информацию о событии.
Третий аргумент — логическое значение, которое указывает должен ли данный обработчик перехватывать событие (обрабатывать его раньше своей очереди). Обычно это не требуется и в качестве значения аргумента указывается false.
Например, так можно привязать обработчик к событию загрузки документа:
window.addEventListener("load", init, false);
При этом функция init должна быть определена.
Для удаления обработчика существует метод removeEventListener(). Он принимает точно такой же набор аргументов как и addEventListener(). Например, для удаление обработчика, установленного в предыдущем примере, достаточно выполнить код:
window.removeEventListener("load", init, false);
Обратите внимание, что указываются все три аргумента. Это делается для точного определения «того самого обработчика». Например, две следующих строки регистрируют два разных обработчика события.
document.myform.addEventListener("submit", validate(e), false);
document.myform.addEventListener("submit", validate(e), true);
Для удаления этих обработчиков требуется два разных вызова removeEventListener().