Интерфейс MutationEvent в DOM2

Интерфейс MutationEvent содержит данные о событиях, связанных с изменениями в документе HTML.

Для этого интерфейса определены следующие свойства, доступные только для чтения:

· relatedNode – содержит вторичный узел для данного события, например, если событие направлено узлу, чей родительский элемент будет изменяться, то в этом свойстве будет содержаться родительский узел;

· prevValue – содержит предыдущее значение узла Attr для событии DOMAttrModified;

· newValue – содержит новое значение узла Attr для событии DOMAttrModified;

· attrName – содержит имя изменяемого узла Attr в событии DOMAttrModified;

· attrChange – содержит тип изменения для узла Attr при событии DOMAttrModified (целое число).

Свойство attrChange может иметь одно из следующих трех значений:

· MODIFICATION (1) – модификация узла Attr;

· ADDITION (2) – добавление узла Attr;

· REMOVAL (3) – удаление узла Attr.

Интерфейс MutationEvent наследует все свойства и методы интерфейса Event.

Пример 4.5.48. Использование свойств события MutationEvent:

Тело документа HTML содержит кнопку со значением идентификатора id, равным "startButton":

<button id="startButton"

style="color: green; font-weight: bold">Старт</button>

Функция startButtonEventHandlers()объявляет функцию-обработчик события мыши щелчка мыши по кнопке и блоков прослушивания событий изменения документа для кнопки startButton:

function startButtonEventHandlers()

{

// Объявление функции-обработчика

// щелчка мышью по кнопке startButton

document.getElementById("startButton").onclick =

clickHandler;

// Если Web-браузер – не Internet Explorer

if (navigator.userAgent.indexOf("MSIE") == -1)

{

// Объявление блока прослушивания для события

// изменения атрибута элемента startButton

document.getElementById(

"startButton").addEventListener(

"DOMAttrModified", attrModHandler, false);

// Объявление блока прослушивания для события

// изменения текстового содержимого

// элемента startButton

document.getElementById("

startButton").addEventListener(

DOMCharacterDataModified", dataModHandler, false);

}

}

Эта функция вызывается в элементе body при загрузке Web-страницы:

<body onload="startButtonEventHandlers()">

Функция clickHandler() выполняет обработку событий мыши для кнопки startButton:

function clickHandler(evt)

{

// Получение элемента startButton

startElement = document.getElementById("startButton");

// Изменение цвета надписи кнопки

startElement.style.color = "red";

// Если Web-браузер – Internet Explorer или Safari

if (navigator.userAgent.indexOf("MSIE")!= -1 ||

navigator.userAgent.indexOf("Safari")!= -1)

// Вызов функции attrModHandler()

attrModHandler(null, "DOMAttrModified",

"color:green;font-weight:bold",

"color:red;font-weight:bold", "style", 1);

// Изменение текста надписи на кнопке

startElement.firstChild.nodeValue = "Стоп";

// Если Web-браузер – Internet Explorer

if (navigator.userAgent.indexOf("MSIE")!= -1)

// Вызов функции dataModHandler()

dataModHandler(null, "DOMCharacterDataModified",

"Старт", "Стоп");

}

Функция attrModHandler() выполняет обработку события изменения значения атрибута элемента button в Firefox и Opera (в Internet Explorer и Safari эта функция при изменении атрибута вызывается явно):

function attrModHandler(evt, type, prevValue,

newValue, attrName, attrChange)

{

// Если Web-браузер – не Internet Explorer

// и не Safari

if (navigator.userAgent.indexOf("MSIE") == -1 &&

navigator.userAgent.indexOf("Safari") == -1)

{

// Определение типа события

type = evt.type;

// Определение старого значения

prevValue = evt.prevValue;

// Определение нового значения

newValue = evt.newValue;

// Определение имени атрибута

attrName = evt.attrName;

// Определение вида изменения

attrChange = evt.attrChange;

}

// Вывод значений свойств события

alert("type=" + type + "\nprevValue='" +

prevValue + "'\nnewValue='" + newValue +

"'\nattrName=" + attrName +

"\nattrChange=" + attrChange);

}

Функция dataModHandler() выполняет обработку события изменения значения текстового содержимого элемента button в Firefox, Opera и Safari (в Internet Explorer эта функция при изменении текстового содержимого вызывается явно):

function dataModHandler(evt, type, prevValue, newValue)

{

// Если Web-браузер – не Internet Explorer

if (navigator.userAgent.indexOf("MSIE") == -1)

{

// Определение типа события

type = evt.type;

// Определение старого значения

prevValue = evt.prevValue;

// Определение нового значения

newValue = evt.newValue;

}

// Вывод значений свойств события

alert("type=" + type + "\nprevValue='" +

prevValue + "'\nnewValue='" + newValue + "'");

}

В результате нажатия на кнопку startButton в Web-странице Web-браузера Opera будут выведены следующие сообщения:

В остальных Web-браузерах вывод будет иметь аналогичный вид (за исключением того, что в Firefox неверно реализована обработка события DOMAttrModified, вследствие чего свойства prevValue и newValue имеют одинаковые значения).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: