Дополнительные методы интерфейса HTMLElement
Вместо стандартного интерфейса EventTarget элементы HTML в IE имеют следующие нестандартные методы:
Нестандартные методы интерфейса HTMLElementМетод | Описание |
---|
attachEvent | Регистрирует обработчик событий заданного типа. | detachEvent | Удаляет заданный обработчик событий заданного типа. | fireEvent | Генерирует заданное событие. | releaseCapture | Отключает перехват событий мыши. | setCapture | Включает перехват событий мыши. |
Метод attachEvent
Синтаксис: элемент.attachEvent(type, function) Аргументы: type - выражение типа DOMString function - указатель на функцию Результат: логическое значение
Метод attachEvent регистрирует новый обработчик function события type для данного элемента. Он возвращает true, если регистрация прошла успешно, и false в противном случае. Если новый обработчик регистрируется во время обработки события, то он будет активизироваться только следующими событиями. Если для события зарегистрированы несколько обработчиков, то они вызваются в произвольном порядке. В следующем примере создается обработчик нажатия клавиши, который сработает только один раз.
<BODY onload="document.getElementById('btn').attachEvent('onclick', hurrah)"> <SCRIPT> function hurrah() { alert('Молодец!'); event.srcElement.detachEvent('onclick', hurrah); } </SCRIPT> <BUTTON id="btn">Нажми меня</BUTTON>
Метод detachEvent
Синтаксис: элемент.detachEvent(type, function) Аргументы: type - выражение типа DOMString function - указатель на функцию
Метод detachEvent дерегистрирует обработчик function события type для данного элемента, который был ранее зарегистрирован методом attachEvent.
Метод fireEvent
Синтаксис: элемент.fireEvent(type, evt?) Аргументы: type - выражение типа DOMString evt - выражение типа event Результат: логическое значение
Метод fireEvent генерирует событие type для данного элемента. Необязательный аргумент evt должен содержать указатель на объект типа event, содержащий описание генерируемого события. Метод возвращает true, если генерация события прошла успешно, и false в противном случае.
Независимо от содержимого аргумента evt четыре его параметра всегда инициализируются следующими значениями:
cancelBubble | false | returnValue | true | srcElement | элемент, чей метод fireEvent вызван | type | тип события, заданный в вызове fireEvent |
Пример генерации события (переменная evt здесь на самом деле не нужна и приведена только для того, чтобы показать, как создаются объекты типа event):
<BODY onload="init()"> <SCRIPT> function init() { document.body.attachEvent('onclick', hurrah); var evt = document.createEventObject(); document.body.fireEvent('onclick', evt); } function hurrah() { alert('Молодец!'); } </SCRIPT>
Метод releaseCapture
Синтаксис: элемент.releaseCapture()
Метод releaseCapture отключает перехват событий мыши, включенный методом setCapture.
Метод setCapture
Синтаксис: элемент.setCapture(flag?) Аргументы: flag - логическое выражение
Метод setCapture включает перехват всех событий, генерируемых мышью. Если его аргумент flag равен true (принято по умолчанию), то данный элемент будет перехватывать все события мыши в пределах всего документа. Если аргумент равен false, то данный элемент будет перехватывать только события мыши от содержащихся внутри него элементов. Включение перехвата событий мыши запрещает выбор текста и перетаскивание (drag-and-drop) в окне обозревателя. Пример:
<BODY onload="document.getElementById('capturer').setCapture()"> <DIV id="capturer" onclick="alert('Молодец!')"> </DIV> <BUTTON>Щелчок на этой кнопке перехватывается элементом DIV.</BUTTON>
1 2 3 4
8 8 8
|