JavaScript для мага


Перехват события - часть 2


 

Если теперь в тэге <a> Вы зададите программу обработки события onClick, то поймете, что данная программа при возникновении данного события вызвана уже не будет. И это не удивительно, поскольку объект window перехватывает сигнал о событии  еще до того, как он достигает объекта link. Если же Вы определите функцию handle() как

 

function handle(e) {

  alert("The window object captured this event!");

  window.routeEvent(e);

  return true;

}

 

то компьютер будет проверять, определены ли другие программы обработки событий для данного объекта. Переменная e - это наш объект Event, передаваемый функции обработки событий в виде аргумента.

 

Кроме того, Вы можете непосредственно послать сигнал о событии какому-либо объекту. Для этого Вы можете воспользоваться методом handleEvent(). Это выглядит следующим образом:

 

<html>

<script language="JavaScript">

 

window.captureEvents(Event.CLICK);

 

window.onclick= handle;

 

function handle(e) {

  document.links[1].handleEvent(e);

}

 

</script>

<a href="test.htm">"Кликните" по этой ссылке</a><br>

<a href="test.htm"

  onClick="alert('Обработчик событий для второй ссылки!');">Вторая ссылка</a>

</html>

 

(online-версия позволит Вам проверить этот скрипт немедленно)

 

Все сигналы о событиях Click,  посылаются на обработку по второй ссылке - даже если Вы вовсе и не щелкнули ни по одной из ссылок!

 

Следующий скрипт демонстрирует, как Ваш скрипт может реагировать на сигналы о нажатии клавиш. Нажмите на какую-либо клавишу и посмотрите, как работает этот скрипт.

 

<html>

<script language="JavaScript">

 

window.captureEvents(Event.KEYPRESS);

 

window.onkeypress= pressed;

 

function pressed(e) {

  alert("Key pressed! ASCII-value: " + e.which);

}

 

</script>

</html>

 

©1996,1997 by Stefan Koch

e-mail:skoch@rumms.uni-mannheim.de

http://rummelplatz.uni-mannheim.de/~skoch/

Моя книга по JavaScript: http://www.dpunkt.de/javascript

 

 




Начало  Назад