Фиксация события
Важным свойством является
фиксация события. Если пользователь например нажимает на кнопку, вызывается обработчик события
onClick для этой кнопки. С помощью фиксации события Вы может достичь того, что ваше окно, документ или объект слоя фиксирует событие прежде, чем оно обрабатывается объектом кнопки. Аналогично, ваше окно, документ или объект слоя может обрабатывать событие прежде, чем оно достигнет предназначенного адресата. Давайте посмотрим на пример, чтобы увидеть применение фиксации события:
<html>
<head>
<script language="JavaScript">
window.captureEvents(Event.CLICK);
window.onclick= handle;
function handle(e) {
alert("The window object captured this event!");
return true; // i.e. follow the link
}
</script>
</head>
<body>
<a href="test.htm">Click on this link</a>
</body>
</html>
Вы видите, что мы не определяем драйвер события внутри тега
<a>. Вместо этого мы используем
window.captureEvents(Event.CLICK),чтобы фиксировать событие
Click через
window-объект. Обычно window-объект не знает событие
Click через фиксацию события мы можем переназначать его к объекту окна.
Пожалуйста обратите внимание на запись
Event.CLICK. CLICK должно быть написано в верхнем регистре. Если вы хотите фиксировать несколько событий, вы должны отделить их через |, например:
window.captureEvents(Event.CLICK | Event.MOVE);
Вы можете видеть, что мы используем
return true; внутри функции
handle(), которую мы определили, как функцию обработки события. Это означает, что окно браузера убдет следовать за связью после выполнения функции
handle(). Если вместо этого вы пишете
return false; все последующие действия подавляются.
Если вы определите обработчик события
onClick внутри
<a> тега, вы поймете, что этот драйвер события не будет вызыватся. Это очевидно, поскольку объект окна фиксирует событие прежде, чем оно достигает объекта связи. Если вы определите функцию
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">Click on this link</a><br>
<a href="test.htm"
onClick="alert('Event handler of second link!');">Second link</a>
</html>
Все события
Click посылаются по второй ссылке – даже если вы не щелкните непосредственно на ссылке!
Следующий код показывает, что ваш сценарий может реагировать на события клавиш. Всего лишь нажмите клавишу, чтобы увидеть этот сценарий в действии.
<html>
<script language="JavaScript">
window.captureEvents(Event.KEYPRESS);
window.onkeypress= pressed;
function pressed(e) {
alert("Key pressed! ASCII-value: " + e.which);
}
</script>
</html>