- •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
17.1.2. Обработчики событий как атрибуты
Как мы видели в примерах из предыдущих глав, обработчики событий (в исход
ной модели обработки событий) задаются в виде строк JavaScriptкода, присваи
ваемых в качестве значений HTMLатрибутам. Например, чтобы выполнить
JavaScriptкод при щелчке на кнопке, укажите этот код в качестве значения ат
рибута onclick тега <input> (или <button>):
<input type="button" value="Нажми меня" onclick="alert('спасибо');">
Значение атрибута обработчика события – это произвольная строка JavaScript
кода. Если обработчик состоит из нескольких JavaScriptинструкций, они долж'
ны отделяться друг от друга точками с запятой. Например:
<input type="button" value="Щелкни здесь"
onclick="if (window.numclicks) numclicks++; else numclicks=1;
this.value='Щелчок # ' + numclicks;">
Если обработчик события требует нескольких инструкций, то, как правило, про
ще определить его в теле функции и затем задать HTMLатрибут обработчика со
бытия для вызова этой функции. Например, проверить введенные пользовате
лем в форму данные перед их отправкой можно при помощи атрибута onsubmit
тега <form>.1 Проверка формы обычно требует как минимум нескольких строк
кода, поэтому не надо помещать весь этот код в одно длинное значение атрибута,
разумнее определить функцию проверки формы и просто задать атрибут onsubmit
для вызова этой функции. Например, если для проверки определить функцию
с именем validateForm(), то можно вызывать ее из обработчика события следую
щим образом:
<form action="processform.cgi" onsubmit="return validateForm();">
1 Подробное описание htmLформ, включая пример проверки правильности за
полнения полей формы, приводится в главе 18.408 Глава 17. События и обработка событий
Помните, что язык HTML нечувствителен к регистру, поэтому в атрибутах обра
ботчиков событий допускаются буквы любого регистра. Одно из распространен
ных соглашений состоит в употреблении символов различных регистров, при
этом префикс «on» записывается в нижнем регистре: onClick, onLoad, onMouseOut
и т. д. Однако в этой книге для совместимости с языком XHTML, чувствитель
ным к регистру, я предпочел везде нижний регистр.
JavaScriptкод в атрибуте обработчика события может содержать инструкцию
return, а возвращаемое значение может иметь для броузера специальный смысл.
Вскоре мы это обсудим. Кроме того, следует отметить, что JavaScriptкод обра
ботчика события работает в области видимости (см. главу 4), отличной от гло
бальной. Это также более подробно обсуждается далее в этом разделе.
17.2.6.3. Интерфейс MouseEvent
Интерфейс MouseEvent наследует свойства и методы интерфейсов Event и UIEvent,
а также определяет следующие дополнительные свойства:
button
Число, указывающее, какая кнопка мыши изменила свое состояние во время
события mousedown, mouseup или click. Значение 0 обозначает левую кнопку, 1 –
среднюю кнопку, а 2 – правую кнопку. Это свойство применяется, только ко
гда кнопка изменяет состояние, и не применяется, например, для получения
информации о том, удерживается ли нажатой кнопка во время события mouse
move. Примечательно, что Netscape 6 ведет себя неправильно, используя вме
сто значений 0, 1 и 2 значения 1, 2 и 3. В Netscape 6.1 эта ошибка исправлена.424 Глава 17. События и обработка событий
altKey, ctrlKey, metaKey, shiftKey
Эти четыре логических значения указывают, нажимались ли клавиши Alt,
Ctrl, Meta и Shift, когда происходило событие мыши. В отличие от свойства but
ton, эти свойства клавиатуры действительны для любого типа события мыши.
clientX, clientY
Эти два свойства указывают координаты X и Y указателя мыши относитель
но клиентской области или окна броузера. Обратите внимание, что данные
координаты не учитывают прокрутку документа: если событие происходит
в верхнем крае окна, значение свойства clientY равно 0 независимо от того,
насколько далеко был прокручен документ. К сожалению, DOM Level 2 не
предоставляет стандартного способа трансляции оконных координат в коор
динаты документа. В броузерах, не относящихся к линейке Internet Explo
rer, можно сложить значения window.pageXOffset и window.pageYOffset (подроб
ности см. в разделе 14.3.1).
screenX, screenY
Эти два свойства задают координаты X и Y указателя мыши относительно
верхнего левого края дисплея. Эти значения полезны, если вы планируете от
крыть новое окно в месте возникновения события мыши или рядом с ним.
relatedTarget
Это свойство ссылается на узел, который связан с целевым узлом события.
Для события mouseover это узел, который указатель мыши оставил, перейдя
к целевому узлу. Для событий mouseout это узел, в который переместился ука
затель мыши, оставив целевой узел. Для других типов событий это свойство
не используется