2014-12-25 3 views
4

Зачем нужно добавлять параметр для обработки событий? Как так:Почему параметр, необходимый для событий keydown?

document.addEventListener('keydown', function(e) { 
         var keyCode = e.keyCode }); 

Почему вам нужно 'e' в там? почему функция вообще нуждается в параметре?

+2

Поскольку функция вызывается с событием в качестве аргумента. – elclanrs

ответ

0

Не надо .. (но функция обратного вызова событие всегда вызывается с событием в качестве аргумента)

бывают случаи, когда вы хотите знать, какой элемент вызвал событие и что это событие. И еще несколько сведений .. В вашем примере e.keycode полезно определить, какой ключ был нажат.

Существует множество методов для этого аргумента, например preventDefault(), чтобы предотвратить поведение события по умолчанию или e.target, чтобы получить цель, вызвавшую событие. Поэтому вам нужно передать аргумент e как параметр функции.

Если вы не требуют это просто не передать его в качестве аргумента

2

e стенды для объекта событий, который содержит информацию о обожженного событии (тип события, код ключа, цели события и т.д.). Этот объект передается функции обработчика при срабатывании события.

Это НЕ обязательно. Если вам не важно, какая клавиша нажата или какая-либо другая информация о событии, просто пропустите параметр, это нормально.

Даже если вы хотите получить информацию, этот параметр также можно пропустить. Вы можете получить его через arguments[0], это действительно зависит от вас. Это делает код менее читаемым.

+0

спасибо за ответ. Почему это изменилось бы, если бы вы заботились о том, чтобы узнать, какой ключ был нажат? – nachime

+0

@nachime На самом деле, даже если вам нужна информация, вы все равно можете пропустить параметр. Поскольку вы можете получить его через 'arguments [0]', это зависит от вас. – Leo

2

source:

Интерфейс Event доступен из функции обработчика, с помощью объекта события, переданного в качестве первого аргумента.

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

function foo(evt) { 
    // the evt parameter is automatically assigned the event object 
    alert(evt); 
} 
table_el.onclick = foo; 

source:

Алгоритм обработки обработчика события для обработчика события H и объект события Е выглядит следующим образом:

1. Пусть обратный вызов будет результатом получения текущее значение события обработчик H.

2. Если обратный вызов равен NULL, отмените эти шаги.

3.Процесс объект события E следующим образом:

Если Е является объект ErrorEvent и обработчик события IDL типа атрибута является OnErrorEventHandler

Вызвать обратный вызов с пятью аргументов, первый из которых имеет значение атрибута сообщения E в , второй - значением атрибута имени файла E, третий - значением атрибута lineno E, четвертый - значением атрибута colno E, пятый - значением атрибута ошибки E, а с обратным вызовом это значение установлено в E currentTarget. Пусть возвращаемое значение является возвращаемым значением обратного вызова. [WEBIDL]

В противном случае

Вызвать обратного вызова с одним аргументом, значение которого является объектом события Е, с обратного вызова это значение установлено в currentTarget E в. Пусть возвращаемое значение является возвращаемым значением обратного вызова. [WEBIDL]

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

4. Процесс возвращаемое значение следующим образом:

Если тип события Mouseover Если тип события ошибки и Е является объектом ErrorEvent

Если возвращаемое значение является веб-IDL boolean true value, затем отмените событие. Если тип события является недогруженным

Тип атрибута обработчика события IDL - OnBeforeUnloadEventHandler, поэтому возвращаемое значение будет принудительно введено в значение null или DOMString.

Если возвращаемое значение равно null, отмените событие.

В противном случае

Если объект Event E является объектом BeforeUnloadEvent, и объектом Event значения E атрибут ReturnValue является пустой строкой, а затем установите значение атрибута ReturnValue, чтобы вернуть значение.

В противном случае

Если возвращаемое значение является веб-IDL логического ложного значения, то отменить событие.

+0

Nice 1 bhojendra –

Смежные вопросы