Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Создание нового события (https://javascript.ru/forum/events/84507-sozdanie-novogo-sobytiya.html)

vadval15 04.10.2022 11:25

Создание нового события
 
В документации по JavaScript описывается возможность создания пользователем собственного события с помощью операторов Event или CustomEvent, но совершенно не объясняется способ, с помощью которого это можно сделать, ведь событие - это не какое-то имя (тип), а прежде всего - условие, которое должно выполняться. А информации о том, что из себя оно должно представлять и куда помещаться, мне пока не удалось найти. Наглядный пример пользовательского события - заполнение пустого контейнера (div) какими-то данными, после чего их должна обрабатывать функция, то есть условие примерно выглядит так: value.length > 0. Буду весьма признателен за разъяснение данного вопроса о возможности помещения куда-либо указанного условия при формировании события.

ksa 04.10.2022 12:11

Х/з что и как ты читал...
Цитата:

Сообщение от vadval15
совершенно не объясняется способ, с помощью которого это можно сделать

Отнюдь!
Первым что сообщается - это нужно иметь/найти некий элемент на который можно навесить слушателя событий...
Потом создается объект событие или пользовательское событие и его "вызывают" на том элементе
<h1 id="elem">Привет для Васи!</h1>

<script>
  // дополнительная информация приходит в обработчик вместе с событием
  elem.addEventListener("hello", function(event) {
    alert(event.detail.name);
  });

  elem.dispatchEvent(new CustomEvent("hello", {
    detail: { name: "Вася" }
  }));
</script>

https://learn.javascript.ru/dispatch...lskie-sobytiya

ksa 04.10.2022 12:13

Цитата:

Сообщение от vadval15
ведь событие - это не какое-то имя (тип), а прежде всего - условие, которое должно выполняться.

С чего такие выводы?
Событие как раз имеет определенный тип. И некое "имя", которое его и определяет при вызове на элементе...
См.пример выше.

ksa 04.10.2022 12:14

Цитата:

Сообщение от vadval15
А информации о том, что из себя оно должно представлять и куда помещаться, мне пока не удалось найти.

Вот тебе статья - там все расписано.
https://learn.javascript.ru/dispatch-events

ksa 04.10.2022 12:18

Цитата:

Сообщение от vadval15
Наглядный пример пользовательского события - заполнение пустого контейнера (div) какими-то данными, после чего их должна обрабатывать функция

Х/з насколько этот пример наглядный... :)

Видно ты пока не понял сути событийности.
Все действо выполняет слушатель события. А это функция. Что она будет делать - это уже решает разработчик.
Когда "вызывать" событие также решает разработчик. Что передавать в событие - так же решает он.

Т.ч. если ты готов делать тестовые примеры... Показывать их тут...
Всегда можно показать на них что-то конкретное.

vadval15 04.10.2022 14:50

Спасибо за обстоятельный ответ. Правильно ли я понимаю, что к традиционным событиям (например, нажатию на кнопку мыши или клавишу клавиатуры) можно добавить новое "событие" - прикрепление его к элементу?

ksa 04.10.2022 17:31

Событие не добавляется к другим событиям... :)
Слушатели событий навешиваются на элементы которые к этому "приспособлены". Поскольку не всякий "элемент JS" может "получать" слушателя событий.

ksa 04.10.2022 17:36

Применительно к разделу Events/DOM/Window
ДОМ-элементы могут иметь слушатели событий... Также объект window тоже может иметь слушателей событий.

vadval15 04.10.2022 18:28

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

voraa 04.10.2022 18:28

Следует только учитывать, что события, вызываемые с помощью dispatchEvent абсолютно синхронны. Они не ставятся в очередь, а обрабатываются так, как будто мы просто вызываем функцию обработчик события


Часовой пояс GMT +3, время: 00:59.