среда, 9 декабря 2009 г.

Особые случаи событий

http://www.ngmu.ru/Info/Dynamic%20HTML/05/05.htm

Используя указатели функций JavaScript можно назначить обработчик событий в одном фрейме или браузере для свойства события в другом фрейме. Этот мощный метод позволяет совместно использовать программу в разных документах, однако при этом также возрастает сложность кода.

Объект event тесно связан с окном, в котором было сгенерировано событие. Поэтому даже если обработчик событий может находиться в документе другого фрейма, должен быть использован объект event фрейма, который сгенерировал событие. Это требует просмотра иерархии объектов от элемента, который сгенерировал событие до объекта event.

Данный метод разрешает создавать гибкие и мощные программы, но он ограничен установками модели безопасности браузера. Например, страница не может назначить обработчики событий окна фрейма или браузера, которое содержит документ из другого домена. Без этого ограничения несанкционированная страница могла бы получить доступ к событиям клавиатуры и отслеживать ввод конфиденциальной информации. Более того, если пользователь покидает страницу, то все обработчики событий отключаются. Это согласуется с объектной моделью динамического HTML, в которой новая страница всегда открывается в совершенно новом состоянии.

Метод назначения функции является наиболее эффективным способом захвата событий в другом фрейме. При этом не требуется создание дополнительного обработчика функции. Однако данный метод предоставляет доступ только к тому элементу, который сгенерировал событие:

<SCRIPT LANGUAGE="JavaScript">
function doClick() {
/* Это обработчик событий нажатия кнопки документа в окне window2. */
/* Доступ к объекту события не может осуществлен непосредственно с
использованием объекта события текущего окна.- Напротив,
следует обратиться к объекту события окна window2. Указатель
this передается в документ, который сгенерировал событие. */
with (this.document.parentWindow.event) {
// Использование объекта события.
}
}

var window2 = window.open("sample.htm");
/* Связывает обработчик событий окна window2 с функцией
doClick в данном документе. * */
window2.body.onclick = doClick;
</SCRIPT>

Программирование событий, возникающих между фреймами, является основой примера Event Tutor в главе 3. Работа Event Tutor основывается на динамическом связывании событий выбранного документа и выводе строк в текущем окне.

Комментариев нет:

Отправить комментарий