ЛУЧШИЙ САЙТ ДЛЯ РАЗРАБОТЧИКОВ
×

JavaScript учебник

JS HOME JS Introduction JS Where To JS Output JS Statements JS Syntax JS Comments JS Variables JS Operators JS Arithmetic JS Assignment JS Data Types JS Functions JS Objects JS Scope JS Events JS Strings JS String Methods JS Numbers JS Number Methods JS Arrays JS Array Methods JS Array Sort JS Array Iteration JS Dates JS Date Formats JS Date Get Methods JS Date Set Methods JS Math JS Random JS Booleans JS Comparisons JS Conditions JS Switch JS Loop For JS Loop While JS Break JS Type Conversion JS Bitwise JS RegExp JS Errors JS Debugging JS Hoisting JS Strict Mode JS this Keyword JS Style Guide JS Best Practices JS Mistakes JS Performance JS Reserved Words JS Versions JS Version ES5 JS Version ES6 JS JSON

JS Forms

JS Forms Forms API

JS Objects

Object Definitions Object Properties Object Methods Object Constructors Object Prototypes

JS Functions

Function Definitions Function Parameters Function Invocation Function Call Function Apply Function Closures

JS HTML DOM

DOM Intro DOM Methods DOM Document DOM Elements DOM HTML DOM CSS DOM Animations DOM Events DOM Event Listener DOM Navigation DOM Nodes DOM Collections DOM Node Lists

JS Browser BOM

JS Window JS Screen JS Location JS History JS Navigator JS Popup Alert JS Timing JS Cookies

JS AJAX

AJAX Intro AJAX XMLHttp AJAX Request AJAX Response AJAX XML File AJAX PHP AJAX ASP AJAX Database AJAX Applications

JS JSON

JSON Intro JSON Syntax JSON vs XML JSON Data Types JSON Objects JSON Arrays JSON Parse JSON Stringify JSON PHP JSON HTML JSON JSONP

JS References

JavaScript Objects HTML DOM Objects


JavaScript HTML DOM EventListener


addEventListener() Метод

Пример

Добавьте прослушиватель событий, который срабатывает при нажатии пользователем кнопки:

document.getElementById("myBtn").addEventListener("click", displayDate);

Метод addEventListener () присоединяет обработчик событий к указанному элементу.

Метод addEventListener () прикрепляет обработчик событий к элементу без перезаписи существующих обработчиков событий.

Можно добавить несколько обработчиков событий в один элемент.

Можно добавить несколько обработчиков событий одного типа в один элемент, т.е. два события "Click".

Прослушиватели событий можно добавлять к любому объекту DOM, а не только к элементам HTML. т.е. объект Window.

Метод addEventListener () упрощает управление реакцией события на восходящую маршрутизацию.

При использовании метода addEventListener (), JavaScript отделяется от HTML разметки, для лучшей читаемости и позволяет добавлять прослушиватели событий, даже если вы не контролируете разметку HTML.

Прослушиватель событий можно легко удалить с помощью метода RemoveEventListener ().


Синтаксис

element.addEventListener(event, function, useCapture);

Первым параметром является тип события (например, "Click" или "MouseDown").

Вторым параметром называется функция, которую нужно вызвать при возникновении события.

Третий параметр — логическое значение, указывающее, следует ли использовать маршрутизацию событий или запись событий. Этот параметр является необязательным.

Обратите внимание, что вы не используете префикс "on" для события; Используйте "Click" вместо "OnClick".


Добавление обработчика событий к элементу

Пример

Оповещение "Hello World!" когда пользователь щелкает элемент:

element.addEventListener("click", function(){ alert("Hello World!"); });

Вы также можете ссылаться на внешнюю "именованную" функцию:

Пример

Alert "Hello World!" when the user clicks on an element:

element.addEventListener("click", myFunction);

function myFunction() {
    alert ("Hello World!");
}


Добавление нескольких обработчиков событий к одному элементу

Метод addEventListener () позволяет добавлять множество событий к одному и тому же элементу без перезаписи существующих событий:

Пример

element.addEventListener("click", myFunction);
element.addEventListener("click", mySecondFunction);

К одному и тому же элементу можно добавлять события разных типов:

Пример

element.addEventListener("mouseover", myFunction);
element.addEventListener("click", mySecondFunction);
element.addEventListener("mouseout", myThirdFunction);

Добавление обработчика событий в объект Window

Метод addEventListener () позволяет добавлять прослушиватели событий на любой объект HTML DOM, такой как HTML-элементы, HTML-документ, объект Window или другие объекты, поддерживающие события, такие как объект xmlHttpRequest.

Пример

Добавьте прослушиватель событий, который срабатывает, когда пользователь изменяет размер окна:

window.addEventListener("resize", function(){
    document.getElementById("demo").innerHTML = sometext;
});

Передача параметров

При передаче значений параметров используйте "анонимную функцию", которая вызывает заданную функцию с параметрами:

Пример

element.addEventListener("click", function(){ myFunction(p1, p2); });

Восходящая маршрутизация событий или захват событий?

Существует два способа распространения событий в DOM HTML, восходящей и захватывающей.

Распространение событий — это способ определения порядка элементов при возникновении события. Если у вас есть элемент <p> внутри элемента <div>, и пользователь щелкает элемент <p>, то какой элемент "Click" должен обрабатываться первым?

При восходящей маршрутизации внутреннее событие самого элемента обрабатывается первым, а затем внешним: сначала обрабатывается событие Click элемента <p>, затем событие Click элемента <div>.

При захвате внешнего самого элемента сначала обрабатывается событие, а затем внутреннее: событие Click элемента <div> будет обработано первым, а затем <p> событие Click элемента.

С помощью метода addEventListener () можно указать тип распространения, используя параметр "useCapture присвоено":

addEventListener(event, function, useCapture);

Значение по умолчанию — false, которое будет использовать восходящее распространение, если значение установлено в true, событие использует распространение захвата.

Пример

document.getElementById("myP").addEventListener("click", myFunction, true);
document.getElementById("myDiv").addEventListener("click", myFunction, true);

Метод removeEventListener ()

Метод removeEventListener () удаляет обработчики событий, которые были присоединены с помощью метода addEventListener ():

Пример

element.removeEventListener("mousemove", myFunction);

Поддержка браузера

Числа в таблице определяют первую версию обозревателя, полностью поддерживающую эти методы.

Method
addEventListener() 1.0 9.0 1.0 1.0 7.0
removeEventListener() 1.0 9.0 1.0 1.0 7.0

Примечание: Методы addEventListener () и removeEventListener () не поддерживаются в IE 8 и более ранних версиях и Opera 6,0 и более ранних версиях. Однако для этих конкретных версий обозревателя можно использовать метод attachEvent () для присоединения обработчиков событий к элементу и метод детачевент () для его удаления:

element.attachEvent(event, function);
element.
detachEvent(event, function);

Пример

Кросс-браузерное решение:

var x = document.getElementById("myBtn");
if (x.addEventListener) {                    // For all major browsers, except IE 8 and earlier
    x.addEventListener("click", myFunction);
} else if (x.attachEvent) {                  // For IE 8 and earlier versions
    x.attachEvent("onclick", myFunction);
}

Ссылка на объект события HTML DOM

Чтобы просмотреть список всех событий HTML DOM, посмотрите на нашу полную ссылку на объект события HTML DOM.