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

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

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

Вообще не понимаю, зачем создавать свои события? И главное - что должно произойти чтобы они сработали?
  • Вопрос задан
  • 1586 просмотров
Решения вопроса 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);


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

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

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

Похожие вопросы