Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
gos-part2 17,18,19,20,21,22,23 inet-apps.rtf
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
826.94 Кб
Скачать

Модель событий dom

Особенностью программ, создаваемых для среды веб является то, что они управляются событиями. Чтобы узнать, какое событие произошло, в DOM имеется объект события event(табл. 15). Объект event является локальным и его следует явным образом передавать в обработчик события.

Таблица 15

Свойства объекта event

СвойствоОписание

bubbles

Указывает возможность «всплывания» события (передачи управления вверх по иерархической структуре)

cancelable

Указывает возможность отмены действия события, заданного по умолчанию

currentTarget

Указывает событие, обрабатываемое в данный момент

eventPhase

Указывает фазу возбуждения события

target (только NN 6)

Указывает элемент, вызвавший событие

timestamp (только NN 6)

Указывает время возникновения события

type

Указывает имя события

События, связанные с мышью, генерируют объект mouse (табл. 16).

Приведем пример динамически изменяемого текста.

<html> <head> <script language = "JavaScript"> function onMouseover() { var temp = document.getElementById("DynamicText"); temp.firstChild.nodeValue = "Указатель мыши на тексте"; temp.style.color = "red"; } function onMouseout() { var temp = document.getElementById("DynamicText"); temp.firstChild.nodeValue = "Динамический текст"; temp.style.color = "black"; } </script> <title>Динамический текст</title> </head> <body> <p id = "DynamicText" onmouseover = "return onMouseover()"  onmouseout = "return onMouseout()">Динамический текст</p> </body> <html>

Таблица 16

Свойства объекта mouse

СвойствоОписание

altKey

Указывает, была ли нажата клавиша <Alt> в момент возникновения события

button

Указывает, какая клавиша мыши была нажата

clientX

Сообщает горизонтальную координату указателя мыши в окне браузера на момент возникновения события

clientY

Сообщает вертикальную координату указателя мыши в окне браузера на момент возникновения события

ctrKey

Указывает, была ли нажата клавиша <Ctrl> в момент возникновения события

metaKey

Указывает, была ли нажата метаклавиша в момент возникновения события

relatedTarget (только NN 6)

Указывает цель события

screenX

Сообщает горизонтальную координату указателя мыши в окне браузера, вычисленную от начала экранных координат, на момент возникновения события

screenY

Сообщает вертикальную координату указателя мыши в окне браузера, вычисленную от начала экранных координат, на момент возникновения события

shiftKey

Указывает, была ли нажата клавиша <Shift> в момент возникновения события

Пример, определяющий координаты нахождения курсора мыши.

<html> <head> <title>Определение координат курсора</title> <script language = "JavaScript"> function onClick(e) { alert("X = " + e.clientX + "; " + "Y = " + e.clientY); } </script> </head> <body onclick = "onClick(event)"> <p>Щелкните мышью на экране<p> </body> </html>

Встраивание кода JavaScript в документ html

Код JavaScript может быть встроен в документ HTML следующими основными способами.

  1. Включение фрагментов сценария внутри элемента script:   <script type="text/JavaScript">     ... операторы ...   </script>   На практике наряду с атрибутом type часто используют и атрибут language="JavaScript" , несмотря на то, в спецификации HTML он объявлен нежелательным. Наличие атрибутаlanguage гарантирует выполнение сценария любым браузером, поддерживающим JavaScript. Атрибут language позволяет также задать версию языка, возможности которой задействованы в сценарии, и тем самым ограничить выполенение сценария лишь браузерами, поддерживающими указанную версию. Например, при задании language="JavaScript1.5" сценарий будет выполняться лишь в браузерах, в которых реализована поддержка JavaScript1.5.    Элементы script могут содержаться как в разделе head, так и в body. При интерпретации документа они выполняются последовательно. В head, как правило, объявляются и инициализируются глобальные переменные и размещаются описания функций. В body фрагменты сценария обычно реализуют вставку динамически формируемого содержимого, например, вывод случайного изображения или даты последнего изменения документа.  

  2. Включение файлов со сценариями JavaScript:    <script type="text/JavaScript" src="myFunc.js"></script>   Вкключение файлов актуально, если одни и те же функции, объекты, глобальные переменные используются не в одном, а в ряде документов сайта. В таком случае эти файлы (обычно имеющих расширение .js) размещают в разделе head соответствующих документов. Это упрощает поддержку сценариев и позволяет ускорить загрузку за счет кэширования браузером файла с кодом JavaScript.  

  3. Определение обработчика события.   Обработчики событий, связанных с элементами документа HTML, указываются как атрибуты этих элементов. Список этих атрибутов приведен в разделе "События JavaScript". Значение этих атрибутов может представлять собой любое количество операторов JavaScript, однако обычно обработчики определяются как функции, описанные в элементе script. Ниже приведены два условных примера.    <span onClick="this.style.color='red'"> Click me! </span>   - в ответ на щелчок мыши текст "Click me!" станет красным.

<img src="jazz.jpg" id="jazz"
     onMouseOver="changeImg('rock.jpg')"
     onMouseOver="changeImg('jazz.jpg')">

- при наведении / уводе курсора мыши изображение меняется; это реализовано с помощью некоей функции changeImg().  

  1. URL типа JavaScript.   В гиперсылке можно указать значение атрибута href как псеводпротокол javascript: , после которого идет список инструкций. В этом случае при выборе гиперссылки браузер исполняет код JavaScript. Например выбор гиперссылки

<a href="javascript: window.open('next.htm','newWin','width=300,height=200'); void(0)">
   откроем новое окно
</a>

приведет к открытию нового окна 300х200px и загрузке в него документа next.htm.    При использовании URL типа JavaScript следует помнить, что если последняя инструкция возвращает какое-то значение, его строковый эквивалент будет выведен в текущий документ, заменив его содержимое. Попробуйте, например, в приведенном выше коде убрать инструкцию void(0). Новое окно, конечно, откроется, но поскольку метод window.open() возвращает значение объектного типа, в исходном документе появится строка [object] или [object Window] (в зависимости от браузера). Чтобы избежать этого, применяют инструкцию void(0), указывающую на неопределенное возвращаемое значение.    Определенным недостатком URL типа JavaScript является отображение в статусной не адреса целевого документа, а последовательности инструкций JavaScript, невразумительной для большинства пользователей.