@antpv

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

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

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

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

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

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

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

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


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


    Для чего нужно создавать свои события? Чтобы развязать куски кода. Например, в разных местах документа можно нажать на кнопку повторяющегося виджета. Виджет создаст на document событие "widgetClicked". А ещё несколько одинаковых компонентов в странице, слушающих document на предмет события "widgetClicked", получат пинок и что-нибудь вытворят.
    Ответ написан
Пригласить эксперта
Ответы на вопрос 2
  • 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);


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

    Если не понимаете, значит вам это не нужно.
    Ответ написан
  • Exploding
    @Exploding
    wtf?
    Примеры: тройной клик, двойной клик ПКМ/скролом/..., клик + холд и т.д. и варианты комбинирования с клавиатурой, например: ctrl+space+click
    Короче, на что хватит фантазии, когда нужно расширить функционал
    Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы