Какова суть генерации своих событий в JavaScript?

Не совсем понимаю зачем это, а существующая информация на эту тему даёт больше вопросов чем ответов. (которой кстати вообще нет, youtube - чист, на learn.js - абсолютно не понятно, статтей не нашёл).

Я правильно понимаю, что мы можем повесить любое событие на элемент, а после того как оно будет создано, оно будет вызвано на тех элементах на которых висит?

Вообще не понимаю, зачем создавать свои события? И главное - что должно произойти чтобы они сработали?
  • Вопрос задан
  • 1573 просмотра
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Попробую на пальцах объяснить.

Событие – это конверт, на котором написано его название. Внутрь конверта можете вложить что-нибудь, а можете оставить конверт пустым.

Элемент – это столик. Кто угодно может подойти и положить на столик свой конверт.

Слушатель – это мужик, который топчется около столика и смотрит, нет ли чего с интересующим его названием. Может несколько человек поджидать конвертики с определённым названием – прочтут все, если только в конверте не написано «по прочтении съесть» – тогда кто-то съест и дальше не передаст.

Как создать/отправить конверт. В любом месте кода создайте конверт и дайте ему название: var myEvent = new Event('teaTime'); Остается положить конверт на нужный столик:
document.getElementById('stolik').dispatchEvent(myEvent);


Чтобы в событие вложить какие-то данные, нужно использовать другой конструктор и передать нагрузку в поле detail:
var event = new CustomEvent('saySomething', { detail: "Hello there!" });


Для чего нужно создавать свои события? Чтобы развязать куски кода. Например, в разных местах документа можно нажать на кнопку повторяющегося виджета. Виджет создаст на document событие "widgetClicked". А ещё несколько одинаковых компонентов в странице, слушающих document на предмет события "widgetClicked", получат пинок и что-нибудь вытворят.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
rockon404
@rockon404
Frontend Developer
статей не нашёл

Создание собственных событий

Уточню: как браузер понимает, что событие "tellFuckYou" произошло? это главное, о чём нигде не написано

// Создание события
var event = document.createEvent('Event');

// Назначить имя событию
event.initEvent('build', true, true);

// Слушаем событие
document.addEventListener('build', function (e) {
  // e.target соотетствует объекту document
}, false);

// target события может быть любой элемент
document.dispatchEvent(event);


Вообще не понимаю, зачем создавать свои события?

Если не понимаете, значит вам это не нужно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы