Терминология событий JavaScript - PullRequest
9 голосов
/ 02 августа 2010

В чем разница между обработчиком событий и прослушивателем событий?

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

Ответы [ 2 ]

7 голосов
/ 02 августа 2010

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

<strong>Event Handler:</strong>
    An asynchronous callback that is invoked when an event is raised.
<strong>Event Listener:</strong> 
    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 :

<strong>listener:</strong>
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 для простоты использования.

Аналогии

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

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

Подумайтеиз Event Listener как ожидающий вашего доктора.

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

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

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

Ресурсы

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

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

3 голосов
/ 02 августа 2010

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

EDIT

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...