Джо Бернс
Урок 4. Команда onMouseOver.

Концепция

Мы обсудили объекты и методы. Теперь приступим к событиям (events). Сначала разрешите мне кое-что пояснить (или запутать). События (event) и обработчики событий (event handler) относятся к JavaScript, но они скорее "встроены" в HTML-код, а не существуют самостоятельно, как те скрипты, которые мы с вами разбирали. Они входят в структуру документа НТМL, не требуя команд <SCRIPT> и </SCRIPT>. Сами они не скрипты, а скорее область взаимодействия между вашей страницей и читателем.
Подумайте о событиях, как о том, что происходит. Они добавят динамики вашему сайту. Увидев их, посетители скажут: "Ух ты!", а сочинять длинные скрипты совсем не нужно.
Среди разнообразных обработчиков событий для начала мы выберем одно, самое популярное, — onMouseOver (навести мышь).

Скрипт

<A HREF="Урок4.htm"
onMouseOver="window.status='Бесплатный хостинг';
return true">Ссылка</A>


Все это должно быть на одной строке.

Эффект

Ссылка
Наведите курсор на ссылку и посмотрите на строку состояния в окне браузера.

Разбор скрипта

Вы уже знаете достаточно, чтобы понять смысл написанного. Давайте быстро разберем скрипт и попробуем его изменить.
Во-первых, onMouseOver (обратите внимание на заглавные буквы) представляет собой обработчик событий (Event Handler) гипертекстовой ссылки. Это понятно? Он используется внутри гиперссылки.
Формат ссылки отстается без изменений. Те же команды и те же двойные кавычки. onMouseOver ставится сразу же после адреса URL. Видите?
Событие (Event) приводится в действие, когда браузер распознает onMouseOver="". Схема уже должна казаться вам уже немного знакомой: два элемента, разделенных точкой. До сих пор это означало, что один является объектом, а другой методом. Но не в этом случае. Объектом является window (окно), оно существует; status (статус) представляет собой property (свойство) oкна. Это небольшой участок окна, где должен разместиться следующий текст. Это проще запомнить, если представить, что метод обычно выражается глаголом, как write (писать) или get (получить). Свойство выражается существительным и существует как небольшая часть элемента, стоящего перед точкой.
Если у window есть изменяемое свойство status, значит, можно изменить и другие свойства окна. Это верно, но не будем лезть вперед батьки в пекло. Займемся пока окном и его строкой состояния.

После window.status следует знак равенства = и то, что должно произойти. В данном случае это текст в одинарных кавычках. Он появится в строке состояния, когда вы наведете курсор на ссылку.
Пожалуйста, обратите внимание на точку с запятой в конце строки.

return true
Эти два слова имеют не последнее значение. Они дают скрипту указание проверить, есть ли строка состояния. Если отчет (return) соответствует действительности (true), тогда происходит событие. Обратите внимание, что текст в строке состояния уже не изменяется и не изменится, сколько раз вы не наводили бы на нее курсор.

Поэтому не нужно злоупотреблять такими трюками — человек, пришедший к вам на сайт, имеет право знать точный адрес каждой ссылки и другую информацию о загрузке страницы, которую выдает строка состояния.

Другие свойства
Вернемся к свойствам. Если они есть у окна, другие объекты тоже должны иметь свойства. Как насчет цвета фона? Это же свойство, верно? В HTML цветом фона страницы управляет команда BGCOLOR. То же самое и здесь, только обязательно соблюдайте регистр. В JavaScript он пишется bgColor. Подумаем, как создать ссылку. которая изменяла бы фон страницы с помощью обработчика onMouseOver.

  • Во-первых, раз это ссылка, то сохраним ту же схему, которой сегодня уже пользовались.
  • Что мы меняем, окно или нашего старого приятеля, документ? Куда идет команда bgColor, когда вы пишете веб-страницу? В документ. Значит, это и есть нужный нам объект. Заменим window на document.
  • Мы собираемся менять фоновый цвет объекта, потому заменим status на bgColor.
  • Больше нам текст не нужен, так что заменим его цветом. Возьмем зеленый.
  • Нам нужно, чтобы новый цвет оставался независимо от того, сколько раз мы будем наводить курсор на ссылку, потому вставляем return true после точки с запятой.
Вот что у нас получилось...

<a href="Урок4.htm" onMouseOver="document.bgColor='green';
return true">здесь</a>

...а что это нам дает, смотрите здесь, (не щелкайте).

А что, если я хочу и то, и другое
Ладно, и как вы собираетесь этого добиваться? Разберемся:

  • Здравый смысл подсказывает, что нужно написать две команды onMouseOver. Попробуем.
  • Мы хотим, чтобы два события произошли одновременно, поэтому не будем разделять команды точкой с запятой, так как это означает конец.
  • Новое правило: ставьте запятую, чтобы отделить друг от друга разные команды JavaScript, происходящие одновременно.
  • Как там насчет этих дурацких кавычек? Помните, в кавычки ставятся отдельные элементы вроде текста. Раз нам нужно, чтобы обе команды действовали одновременно, ставим кавычки в самом начале первой и в самом конце второй. Таким образом мы показываем браузеру, что все это одно событие. Следите за мыслью?
  • Однако нам еще могут понадобиться одинарные кавычки...
Вернем документу первоначальный цвет...

<a href="Урок4.htm" onMouseOver="document.bgColor='white', onMouseOver=window.status='Бесплатная почта'; return true">здесь</a>

...Результат смотрите здесь,(не щелкайте).

Таких обработчиков событий великое множество, и все они замечательные. В следующем уроке мы поговорим еще о нескольких и научимся их комбинировать.

Вы заметили, что мы уже начинаем понемногу добираться до сути дела? Не забывайте, что это очень логичный язык. Позднее мы проведем урок, посвященный иерархии элементов.

Ваше задание

Посмотрим, не удастся ли мне запутать вас. Я собираюсь дать вам новый метод, alert()(предупредить). Он вызывает небольшое диалоговое окно с текстом и кнопкой OK. Попробуйте сделать так, чтобы окно предупреждения всплывало, когда вы наведете курсор на ссылку. Вот формат команды:

alert('Это задание после четвертого урока')

Подумайте хорошенько, решите, что должно произойти сначала, что потом. На самом деле это довольно просто. Нет, ничего такого я не имею в виду...

Назад | Содержание | Вперед

Джо Бернс
Введение
Сообщения об ошибках
Дата и время
Команда onMouseOver
Еще обработчики событий
Запрос пользователю
Концепция свойств
Иерархия объектов
Создание функции
onUnload и onMouseOut
Новые окна
Новые окна (прод.)
Метод confirm
Математ. переменные
Смена картинки
Смена через функцию
Функция внутри формы
Форма и свойство value
Данные в функцию
Случайные числа
Введение в if
If и Else
Случайный выбор
Введение в FOR
Введение в WHILE
Введение в массивы
Слайд-шоу
Анимация
Подтверждение ввода