Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.10.2022, 11:25
Интересующийся
Отправить личное сообщение для vadval15 Посмотреть профиль Найти все сообщения от vadval15
 
Регистрация: 13.04.2013
Сообщений: 13

Создание нового события
В документации по JavaScript описывается возможность создания пользователем собственного события с помощью операторов Event или CustomEvent, но совершенно не объясняется способ, с помощью которого это можно сделать, ведь событие - это не какое-то имя (тип), а прежде всего - условие, которое должно выполняться. А информации о том, что из себя оно должно представлять и куда помещаться, мне пока не удалось найти. Наглядный пример пользовательского события - заполнение пустого контейнера (div) какими-то данными, после чего их должна обрабатывать функция, то есть условие примерно выглядит так: value.length > 0. Буду весьма признателен за разъяснение данного вопроса о возможности помещения куда-либо указанного условия при формировании события.
Ответить с цитированием
  #2 (permalink)  
Старый 04.10.2022, 12:11
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Х/з что и как ты читал...
Сообщение от 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
Ответить с цитированием
  #3 (permalink)  
Старый 04.10.2022, 12:13
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от vadval15
ведь событие - это не какое-то имя (тип), а прежде всего - условие, которое должно выполняться.
С чего такие выводы?
Событие как раз имеет определенный тип. И некое "имя", которое его и определяет при вызове на элементе...
См.пример выше.
Ответить с цитированием
  #4 (permalink)  
Старый 04.10.2022, 12:14
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от vadval15
А информации о том, что из себя оно должно представлять и куда помещаться, мне пока не удалось найти.
Вот тебе статья - там все расписано.
https://learn.javascript.ru/dispatch-events
Ответить с цитированием
  #5 (permalink)  
Старый 04.10.2022, 12:18
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

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

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

Т.ч. если ты готов делать тестовые примеры... Показывать их тут...
Всегда можно показать на них что-то конкретное.
Ответить с цитированием
  #6 (permalink)  
Старый 04.10.2022, 14:50
Интересующийся
Отправить личное сообщение для vadval15 Посмотреть профиль Найти все сообщения от vadval15
 
Регистрация: 13.04.2013
Сообщений: 13

Спасибо за обстоятельный ответ. Правильно ли я понимаю, что к традиционным событиям (например, нажатию на кнопку мыши или клавишу клавиатуры) можно добавить новое "событие" - прикрепление его к элементу?
Ответить с цитированием
  #7 (permalink)  
Старый 04.10.2022, 17:31
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Событие не добавляется к другим событиям...
Слушатели событий навешиваются на элементы которые к этому "приспособлены". Поскольку не всякий "элемент JS" может "получать" слушателя событий.
Ответить с цитированием
  #8 (permalink)  
Старый 04.10.2022, 17:36
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

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

Последний раз редактировалось ksa, 04.10.2022 в 17:39.
Ответить с цитированием
  #9 (permalink)  
Старый 04.10.2022, 18:28
Интересующийся
Отправить личное сообщение для vadval15 Посмотреть профиль Найти все сообщения от vadval15
 
Регистрация: 13.04.2013
Сообщений: 13

Спасибо за разъяснение. Таким образом, само навешивание созданного "события" на подходящий для этого элемент и является проявлением указанного "события". К сожалению, использование создания события в такой трактовке для меня не представляется возможным.
Ответить с цитированием
  #10 (permalink)  
Старый 04.10.2022, 18:28
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,692

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание нового блока, удаление его, а потом снова создание GeorgieDev Элементы интерфейса 2 02.11.2020 10:35
Как отловить момент добавления нового события? tolikman Events/DOM/Window 3 28.07.2016 22:04
Создание программно нового элемента в Sortable Novozar2 jQuery 2 06.03.2014 15:47
Создание глобального события kez jQuery 1 17.09.2012 11:49
Создание события onclick? kerranswell Events/DOM/Window 31 09.05.2011 21:20