Программный вызов событий

Последнее обновление: 30.10.2023

События могут возникать не только в следствие действий пользователя на веб-странице. События также можно генерировать программно.

«Чтобы программно вызвать событие, у элемента на веб-странице можно вызвать метод dispatchEvent(), в который передается экземпляр объекта Event (либо его производные типа MouseEvent или KeybordEvent).

const event = new Event(имя_события, config);   //  определяем объект события
element.dispatchEvent(event);   //   вызываем событие для элемента element

Первый аргумент, передаваемый конструктору Event, представляет собой строку - тип события. Дополнительно в качестве второго параметра можно передать объект конфигурации. В частности, с помощью объекта конфигурации можно определить следующие свойства:

  • cancelable: можно ли событие отменить (если true, то отменяемое событие, false - неотменяемое)

  • bubbles: должно ли событие быть восходящим (если true, то восходящее)

Например, программно нажмем на ссылку:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>METANIT.COM</title>
</head>
<body>
    <a id="link" href="https://metanit.com">Metanit.com</a>
    <script>
    const link = document.getElementById("link");   // получаем ссылку
    const event = new MouseEvent("click");
    link.dispatchEvent(event);
    </script>
</body>
</html>

Нажатие на ссылку представляет событие мыши "click", поэтому определяем объект события типа MouseEvent:

const event = new MouseEvent("click");

Затем вызываем событие для элемента link:

link.dispatchEvent(event);

В итоге произойдет переход по ссылке уже при загрузке страницы.

И как в общем случае, это событие также можно обработать:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>METANIT.COM</title>
</head>
<body>
    <a id="link" href="https://metanit.com">Metanit.com</a>
    <script>
    const link = document.getElementById("link");

    link.addEventListener("click", (e)=>{
        console.log("Link has been clicked");
        e.preventDefault();     // предупреждаем переход
    });

    const event = new MouseEvent("click", {cancelable:true});
    link.dispatchEvent(event);
    </script>
</body>
</html>

Чтобы выполнение события можно было остановить, в конструктор MouseEvent в качестве второго параметра передаем конфигурационных объект с одним свойством: cancelable:true указывает, что можно остановить обработку события. Благодаря этому в обработчике события "click" можно вызвать метод e.preventDefault()

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850