Событие JavaScript терминология

Каково различие между обработчиком событий и слушателем события?

До недавнего времени я полагал, что они были различными названиями того же самого: функция, которой это называют, когда событие имеет место. Но я недавно считал что-то, которое назвало обработчик событий элементом DOM, с которым был связан слушатель события, который будет иметь смысл.

9
задан ChaosPandion 2 August 2010 в 04:02
поделиться

2 ответа

Чтобы быть совершенно ясным, сам язык не имеет концепции событий. Это часть модели DOM.

Event Handler:
    An asynchronous callback that is invoked when an event is raised.
Event Listener: 
    An object that implements an interface and has events "pushed" to it.

В контексте событий DOM используется следующий интерфейс:

interface EventListener {
  void handleEvent(in Event evt);
};

Затем вы регистрируете слушателя следующим образом:

target.addEventListener(type, listener, useCapture);

Вот документация из MDC :

listener:
The object that receives a notification when an event of the specified 
type occurs. This must be an object implementing the EventListener interface, 
or simply a JavaScript function.

Это похоже на функцию объекты неявно реализуют EventListener для простоты использования.

Аналогии

Подумайте о Обработчике событий как о предоставлении инструкций почтальону.

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

Думайте о слушателе событий как о ожидании встречи с врачом.

Я буду ждать уведомления о том, что вы готовы меня видеть. А пока я буду читать журнал.

В конце концов, это просто абстракции для

Эй, я хочу, чтобы вы выполнили этот код!

Ресурсы

Обработчик событий

Шаблон наблюдателя

7
ответ дан 3 November 2019 в 01:52
поделиться

В контексте JavaScript я склонен использовать их как взаимозаменяемые. Думаю, большинство разработчиков JavaScript считают, что они означают одно и то же: функцию, которая вызывается при наступлении определенного события. Я и, думаю, другие были бы сбиты с толку, если бы вы назвали целевой узел DOM события "обработчиком события".

EDIT

"Слушатель события" имеет особое значение в спецификации DOM Level 2 Events. Параметр listener методов addEventListener и removeEventListener целей событий (таких как элементы) имеет тип EventListener, который указан как интерфейс, содержащий единственный метод handleEvent. Однако JavaScript, не имея понятия об интерфейсах, в разделе ECMAScript Binding указывает:

Object EventListener. Это ссылка на функцию ECMAScript. Этот метод не имеет возвращаемого значения. Параметром является объект Event.

Итак, в JavaScript, кажется, ясно, что слушатель событий - это функция, которая вызывается, когда происходит событие.

"Обработчики событий" также упоминаются в разделе Скрипты спецификации HTML 4.01, на который ссылается спецификация DOM Level 2 Events (выделение мое):

1.3.2. Взаимодействие со слушателями событий HTML 4.0 ... Для достижения совместимости с HTML 4.0 реализаторы могут рассматривать установку атрибутов, представляющих обработчики событий, как создание и регистрацию EventListener на EventTarget.

Отсюда ясно, что в мире JavaScript эти два термина означают по сути одно и то же.

3
ответ дан 3 November 2019 в 01:52
поделиться
Другие вопросы по тегам:

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