Добавляем...


Создание событий
Последней темой обсуждения будет создание событий DOM 2. Об этой возможности упоминают нечасто, и она обычно не реализована в браузерах, но данная тема представляет определенный интерес. Спецификации модели DOM2 Event позволяет создавать синтетические события, используя для этого document.createEvent(). Сначала создается тип нужного события, скажем, HTML-событие:

evt = document.createEvent("HTMLEvents");

Затем, когда событие создано, ему передаются различные атрибуты, связанные с данным типом события. Ниже, например, передаются тип события "click" илогические значения, указывающие, что данное событие должно допускать "восхождение" и отмену:

evt.initEvent("click","true","true");

Наконец, следует найти узел в дереве документа и привязать событие к нему

currentNode.dispatchEvent(evt);

Теперь событие подключено и будет работать точно так же, как любое другое. Следующий пример демонстрирует создание событий DOM2 в действии. В него добавлены addEventListener() и removeEventListener(), чтобы вам не пришлось наблюдать события click, пока вы не готовы.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> Создание событий DOM2</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />

</head>
<body>
<h2> Создание событий DOM2</h2>
<form id="mouseform" name="mouseform" action="#" method="get">
Координаты указателя при щелчке: <input id="clientx" type="text" />,
<input id="clienty" type="text" /> <br />
</form>
<br /><hr /><br />
<script type="text/javascript">
<!--
// Только браузеры DOM2, в IE6 не поддерживается
function showMouseDetails(event)
{
document.mouseform.clientx.value = event.clientX;
document.mouseform.clienty.value = event.clientY;
}
function makeEvent()
{
evt = document.createEvent("HTMLEvents");
evt.initEvent("click","true","true");
currentNode.dispatchEvent(evt);
}
function startListen()
{
document.addEventListener("click", showMouseDetails, true);
}
function stopListen()
{
document.removeEventListener("click", showMouseDetails, true);
}
startListen();
//-->
</script>
<form action="#" method="get" id="myForm" name="myForm">
Текущий узел: <input type="text" name="statusField" value="" />
<br />
<input type="button" value="Родитель" onclick="if
(currentNode.parentNode) currentNode = currentNode.parentNode;
document.myForm.statusField.value = currentNode.nodeName;" />
<input type="button" value="Первый дочерний" onclick="if
(currentNode.firstChild) currentNode = currentNode.firstChild;
document.myForm.statusField.value = currentNode.nodeName;" />
<input type="button" value="Следующий дочерний" onclick="if
(currentNode.nextSibling) currentNode = currentNode.nextSibling;
document.myForm.statusField.value = currentNode.nodeName;" />
<input type="button" value="Предыдущий сестринский" onclick="if
(currentNode.previousSibling) currentNode = currentNode.previousSibling;
document.myForm.statusField.value = currentNode.nodeName;" />
<br /><br />
<input type="button" value="Начало приема"onclick="startListen();" />
<input type="button" value="Конец приема" onclick="stopListen();" />
<br /><br />
<input type="button" value="Создание событий" onclick="makeEvent()" />
</form>
<script type="text/javascript">
<!--
var currentNode = document.body;
document.myForm.statusField.value = currentNode.nodeName;
//-->
</script>
</body>
</html>

Процесс создания событий DOM2 имеет ряд тонкостей, о которых мы не упоминаем, поскольку возможность, о которой идет речь, не очень широко представлена в браузерах. На самом деле при изучении материала этого раздела следует иметь в виду, что сегодня DOM2 предлагает, по-видимому, не самые лучшие средства для создания событий в браузерах, поскольку эти средства не поддерживаются в Internet Explorer.


добавить комментарий
(без перезагрузки и регистрации)


10 случайных разделов

Что ищем на сайте ?


Примеры кода на сайте







@ 2008-2011 Amber
При использовании материалов ссылка на сайт обязательна
Яндекс.Метрика