Откуда берется параметр 'event' в обработчиках событий javascript? - PullRequest
1 голос
/ 29 марта 2012

Часто я вижу код JavaScript, где обработчики событий (например, onmousemove) назначаются динамически. Пример:

document.getElementById('foo').onmousemove = function(e)
{ /* do some stuff with event e */ }

Видимо, этот параметр 'e' является своего рода объектом события. Откуда это взялось, например: кто или что определяет, что это за параметр 'e', ​​когда вызывается функция, и могу ли я сделать это также в статическом html? Я имею в виду, как это:

<div id='foo' onmousemove='Bla(e)'> ... </div>

Что я должен заполнить, чтобы получить «е» для того же события? И могу ли я также объединить это с большим количеством параметров, таких как

<div id='foo' onmousemove='Bla(this,e,4)'> ... </div>

где e, опять же, должен быть объектом события?

Ответы [ 4 ]

3 голосов
/ 29 марта 2012

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

вызывает функцию обратного вызова и передает event object.

1 голос
/ 29 марта 2012

Объект события хранится в window.event внутри любого обработчика событий, поэтому вам не нужно беспокоиться о том, чтобы ваш обработчик соответствовал его принятию в качестве параметра.

Во втором и третьем примерахПараметр e будет передан как неопределенный, поскольку в этой области не существует переменной e (если у вас нет глобального e).

0 голосов
/ 29 марта 2012

Я не уверен, но я думаю, что событие является экземпляром объекта ActionEvent.Я не думаю, что ActionEvent может быть создан вручную, поэтому вы не можете сделать это в статическом HTML.Даже если бы это было возможно, это, конечно, не лучшая практика.

0 голосов
/ 29 марта 2012

Это то, что называется методом обратного вызова.Событие изначально создается операционной системой, отправляется в веб-браузер, который затем передает его вам в javascript объекте Event.

...