JavaRush /Курсы /Модуль 1: Web Core /Пользовательские события

Пользовательские события

Модуль 1: Web Core
21 уровень , 7 лекция
Открыта

8.1 Создание кастомных событий

Кастомные события (или пользовательские события) в JavaScript позволяют разработчикам создавать и диспатчить собственные события, что может быть полезно для передачи информации и взаимодействия между различными частями приложения. Создание и использование кастомных событий может улучшить структуру и гибкость вашего кода, предоставляя способ оповещения и управления состоянием приложения.

Для создания кастомных событий используется конструктор CustomEvent. Этот конструктор позволяет создавать новые события с настраиваемыми параметрами и дополнительными данными.

Синтаксис:

    
      const event = new CustomEvent(type, {detail: additionalData});
    
  

Где:

  • type: строка, представляющая имя события
  • detail: объект, содержащий дополнительные данные, которые будут переданы вместе с событием

Пример создания кастомного события:

JavaScript
    
      const myEvent = new CustomEvent('myCustomEvent', { detail: { message: 'Hello, world!' } });
    
  

8.2 Диспатчинг кастомных событий

Диспатчинг события осуществляется с помощью метода dispatchEvent. Этот метод вызывается на элементе, на котором должно произойти событие.

Объяснение:

  • Добавляется обработчик события myCustomEvent к кнопке myButton, который выводит в консоль сообщение из данных события
  • Создается кастомное событие myCustomEvent с сообщением в detail
  • Событие диспатчится на кнопку myButton, вызывая обработчик и выводя сообщение в консоль

Пример:

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>Custom Event Example</title>
        </head>
        <body>
          <button id="myButton">Button</button>
          <script>
            const button = document.getElementById('myButton');

            // Добавление обработчика для кастомного события
            button.addEventListener('myCustomEvent', function(event) {
              console.log('Custom event received:', event.detail.message);
            });

            // Создание и диспатчинг кастомного события
            const myEvent = new CustomEvent('myCustomEvent', { detail: { message: 'Hello, world!' } });
            button.dispatchEvent(myEvent);
          </script>
        </body>
      </html>
    
  

8.3 Применение кастомных событий

Кастомные события полезны для создания более модульного и поддерживаемого кода, особенно при работе с компонентами и сложными приложениями. Они позволяют одному компоненту оповещать другие компоненты о произошедших изменениях или действиях.

Объяснение:

  • Модуль A диспатчит кастомное событие notifyB на элементе moduleB, передавая данные
  • Модуль B слушает событие notifyB и обрабатывает его, выводя сообщение в консоль

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

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>Module Communication Example</title>
        </head>
        <body>
          <div id="moduleA">Module A</div>
          <div id="moduleB">Module B</div>
          <script>
            const moduleA = document.getElementById('moduleA');
            const moduleB = document.getElementById('moduleB');

            // Модуль A диспатчит кастомное событие
            function notifyModuleB() {
              const event = new CustomEvent('notifyB', { detail: { message: 'Data from Module A' } });
              moduleB.dispatchEvent(event);
            }

            // Модуль B слушает кастомное событие
            moduleB.addEventListener('notifyB', function(event) {
              console.log('Module B received:', event.detail.message);
            });

            // Симуляция действия в Модуле A
            notifyModuleB();
          </script>
        </body>
      </html>
    
  

8.4 Параметры кастомных событий

Кастомные события могут быть дополнительно настроены с помощью следующих параметров:

  • bubbles: логическое значение, указывающее, должно ли событие всплывать. По умолчанию false
  • cancelable: логическое значение, указывающее, может ли событие быть отменено. По умолчанию false
  • composed: логическое значение, указывающее, должно ли событие распространяться за пределы теневых DOM-деревьев. По умолчанию false

Пример:

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>Custom Event Parameters Example</title>
        </head>
        <body>
          <div id="container">
            <button id="myButton">Button</button>
          </div>
          <script>
            const container = document.getElementById('container');
            const button = document.getElementById('myButton');

            // Добавление обработчиков для контейнера и кнопки
            container.addEventListener('customEvent', function(event) {
              console.log('Container received:', event.detail.message);
            });

            button.addEventListener('customEvent', function(event) {
              console.log('Button received:', event.detail.message);
            });

            // Создание и диспатчинг кастомного события с параметрами
            const myEvent = new CustomEvent('customEvent', {
              detail: { message: 'Hello from button' },
              bubbles: true,
              cancelable: true,
              composed: false
            });

            button.dispatchEvent(myEvent);
          </script>
        </body>
      </html>
    
  
1
Задача
Модуль 1: Web Core, 21 уровень, 7 лекция
Недоступна
Уведомление о сохранении
Уведомление о сохранении
1
Задача
Модуль 1: Web Core, 21 уровень, 7 лекция
Недоступна
Обновление текста
Обновление текста
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ