Программы-слушатели событий HTML DOM на JavaScript
- Предыдущая страница События DOM
- Следующая страница Навигация DOM
Метод addEventListener()
Пример
Добавить слушатель событий, который срабатывает при нажатии на кнопку:
document.getElementById("myBtn").addEventListener("click", displayDate);
addEventListener()
Метод добавляет обработчик событий к указанному элементу.
addEventListener()
Метод добавляет обработчик событий к элементу, не заменяя уже существующие.
Вы можете добавить несколько обработчиков событий к одному элементу.
Вы можете добавить несколько обработчиков событий одного и того же типа к одному и тому же элементу, например, два события "click".
Вы можете добавить обработчик событий к любому объекту DOM, а не только к элементам HTML, например, к объекту window.
addEventListener()
метод делает управление тем, как событие будет реагировать на всплытие, легче.
при использовании addEventListener()
метод, чтобы разделить JavaScript и HTML-маркеры, чтобы улучшить читаемость; даже если вы не контролируете HTML-маркеры, вы можете добавить наблюдатель событий.
Вы можете использовать removeEventListener()
метод легко удаляет наблюдатели событий.
грамматика
элемент.addEventListener(событие, функция, useCapture);
первый параметр — это тип события (например, "click" или "mousedown").
второй параметр — это функция, которую мы хотим вызвать при наступлении события.
третий параметр — это булево значение, которое указывает, использовать ли событие всплытия или捕获. Этот параметр является опциональным.
注意:не используйте префикс "on" для событий; используйте "click" вместо "onclick".
добавить обработчик событий к элементу
Пример
показать "Hello World!" при нажатии на элемент пользователем:
элемент.addEventListener("click", function(){ alert("Hello World!"); });
Вы также можете ссылаться на внешние "именованные" функции:
Пример
показать "Hello World!" при нажатии на элемент пользователем:
элемент.addEventListener("click", myFunction); function myFunction() { alert ("Hello World!"); }
добавить несколько обработчиков событий к одному и тому же элементу
addEventListener()
метод позволяет вам добавить несколько событий к одному и тому же элементу, не перезаписывая существующие события:
Пример
элемент.addEventListener("click", myFunction); элемент.addEventListener("click", mySecondFunction);
Вы можете добавить к одному и тому же элементу различные типы событий:
Пример
элемент.addEventListener("mouseover", myFunction); элемент.addEventListener("click", mySecondFunction); элемент.addEventListener("mouseout", myThirdFunction);
добавить обработчик событий к объекту Window
addEventListener()
позволяет вам добавить наблюдателя событий к любому объекту HTML DOM, например, к элементу HTML, объекту HTML, объекту window или другому объекту, поддерживающему события, например, к объекту XMLHttpRequest.
Пример
добавить событие наблюдателя, которое будет запущено при изменении размера окна:
window.addEventListener("resize", function(){ document.getElementById("demo").innerHTML = sometext; });
Передача параметров
При передаче параметров используйте "анонимную функцию", чтобы передать параметры в виде аргументов функции:
Пример
элемент.addEventListener("click", function(){ myFunction(p1, p2); });
Всплытие событий или перехват событий?
В HTML DOM есть два метода пропагации событий: всплытие и перехват.
Пропагация событий - это метод определения порядка обработки элементов при возникновении событий. Если в элементе <div> есть элемент <p>, и пользователь нажал на элемент <p>, то событие "click" для какого элемента должно быть обработано primero?
В режиме всплытия, сначала обрабатывается событие внутреннего элемента, затем внешнего: сначала обрабатывается событие "click" для элемента <p>, затем для элемента <div>.
В режиме перехвата, сначала обрабатывается событие внешнего элемента, затем внутреннего: сначала обрабатывается событие "click" для элемента <div>, затем для элемента <p>.
В методе addEventListener() вы можете определить тип пропагации, используя параметр "useCapture":
addEventListener(событие, функция, useCapture);
по умолчанию false
то будет использоваться пропагация всплытием, если значение этого параметра установлено в true
Если этот параметр установлен в
Пример
document.getElementById("myP").addEventListener("click", myFunction, true); document.getElementById("myDiv").addEventListener("click", myFunction, true);
с помощью метода removeEventListener()
removeEventListener()
Метод удаляет обработчики событий, которые были добавлены addEventListener()
Добавленные обработчики событий метода:
Пример
элемент.removeEventListener("mousemove", myFunction());
Поддержка браузеров
Числа в таблице определяют первую версию браузера, которая полностью поддерживает эти методы.
Метод | |||||
addEventListener() | 1.0 | 9.0 | 1.0 | 1.0 | 7.0 |
removeEventListener() | 1.0 | 9.0 | 1.0 | 1.0 | 7.0 |
Комментарий:IE 8, Opera 6.0 и более ранние версии не поддерживают addEventListener()
и removeEventListener()
Метод. Однако, для этих специальных версий браузеров, вы можете использовать attachEvent()
Метод добавления обработчика событий к элементу и вызова detachEvent()
Метод удаления:
элемент.attachEvent(событие, функция); элемент.detachEvent(событие, функция);
Пример
Кросс-браузерное решение:
var x = document.getElementById("myBtn"); if (x.addEventListener) { // Для основных браузеров, кроме IE 8 и более ранних версий x.addEventListener("click", myFunction); } else if (x.attachEvent) { // Для IE 8 и более ранних версий x.attachEvent("onclick", myFunction); }
Руководство по объекту события HTML DOM
Для получения полного списка всех событий HTML DOM посетите наш Руководство по объекту события HTML DOM.
- Предыдущая страница События DOM
- Следующая страница Навигация DOM