|    | 
СИ-БИ техника | КВ техника | УКВ техника | Радиоизмерения | Защита от TVI | Источники питания | Софт | Расчеты | return_links(); ?>
Справочники
Главная arrow Программирование arrow Java arrow Работа со сценариями — обработчиками событий  

Работа со сценариями — обработчиками событий

Оглавление
Работа со сценариями — обработчиками событий
Страница 2
Страница 3
Страница 4
Страница 4 из 4

Решение 2 (для Microsoft Internet Explorer и Opera)

Присвоить значение false свойству retumvalue описанного ранее объекта

event.

Пример

<HEAD>

<SCRIPT TYPE="text/javascript"> function onClickHandler() {

// Остальной код тела функции-обработчика event.returnValue = false; } </SCRIPT> </HEAD> <BODY>

<P><A HREF="pagel.html" ONCLICK=" onClickHandler (); ">Страница 1</Ах/Р> </BODY>

При щелчке на гиперссылке перехода по указанному в атрибуте href тега <а> интернет-адресу не произойдет.

Решение 2 (для Firefox)

Вызвать метод preventDefauit описанного ранее объекта, передаваемого в функцию-слушатель и несущего информацию о событии. Этот метод не принимает параметров и не возвращает значения.

Пример

<HEAD>

<SCRIPT TYPE="text/javascript"> function hrflOnClick(event) {

// Остальной код тела функции-обработчика event.preventDefault(); } </SCRIPT> </HEAD> <BODY>

<PxA HREF="pagel.html" ID="hrfl">Страница 1</A></P> <SCRIPT TYPE="text/javascript">

var hrflObject = document.all["hrf1"];

hrflObject.addEventListener("click", hrflOnClick, false); </SCRIPT> </BODY>

При щелчке на гиперссылке перехода по указанному в атрибуте href тега <а> интернет-адресу не произойдет.

Перехват обработки событий

Проблема

Мне нужно вклиниться в обработку событий, т. е. подменить уже привязанный к событию обработчик своим с возможностью выполнять и "старый" обработчик. Как это можно сделать?

Решение

1.  Объявляем переменную, в которой будет храниться "старый" обработчик, и присваиваем ей значение null.

2.  Проверяем, присвоен ли свойству элемента страницы, соответствующему нужному нам событию, обработчик события, и, если присвоен, помещаем его в объявленную ранее переменную.

3.   Объявляем функцию, которая станет "новым" обработчиком, и присваиваем ее нужному свойству элемента страницы.

4.  Если нам понадобится выполнить "старый" обработчик, обращаемся к переменной, где он хранится, но перед этим убеждаемся, что ей не присвоено значение null.

Народ предупреждает!

Этот прием имеет смысл использовать, только если обработчик события привязан через атрибут тега элемента страницы или аналогичное свойство представляющего его экземпляра объекта. Если же событие обрабатывается функцией-слушателем, он не будет работать. (Хотя в этом случае можно просто зарегистрировать для нужного события элемента страницы еще одну функцию-слушатель, которая будет работать вместе с уже зарегистрированными.)

Пример

<НЕАD>

<SCRIPT TYPE="text/javascript">

// Объявляем переменную для хранения "старого" обработчика var oldbtnOKClickHandler = null;

// Объявляем функцию, которая станет "новым" обработчиком function btnOKOnClick() {

// Код "нового" обработчика window.alert("Кнопка нажата!");

// Проверяем, существовал ли "старый" обработчик, и, если // существовал, выполняем его

if (oldbtnOKClickHandler) oldbtnOKClickHandler(); } </SCRIPT> </HEAD> <BODY> <FORM>

// Создаем кнопку btnOK, к событию onclick // которой привязан обработчик. //Мы назвали его "старым"

<INPUT TYPE="button" ID="btnOK" VALUE="Нажми!" ONCLICK="document.all['btnOK'].value = 'Нажато',•"> </FORM>

<SCRIPT TYPE="text/javascript"> // Получаем доступ к кнопке btnOK var btnOKObject = document.all["btnOK"];

// Проверяем, был ли к событию onclick уже привязан "старый"

// обработчик, и, если был привязан, присваиваем его объявленной

//в самом начале примера переменной

if (btnOKObject.onclick) oldbtnOKClickHandler = btnOKObject.onclick;

// Привязываем к событию onclick кнопки btnOK "новый" обработчик btnOKObject.onclick = btnOKOnClick; </SCRIPT> </BODY>


« Пред. - След.


CitRadio.com - Электроника и компьютеры

0.143