Почему этот обработчик событий использует "e = e || event"?
Может кто-нибудь объяснить мне, что означает эта строка кода:
function(e) { e = e || event; e.returnValue = false; return false; }
Почему параметр с именем e
?
Если я изменю его на "myparam", это сработает?
Что означает e = e
?
Где объявлена переменная event
(после ||
)?
Что такое e.returnValue?
Ответы
Ответ 1
Это все базовое управление событиями, хотя отсутствует e.preventDefault()
...
Чтобы разбить его, при запуске обработчика событий:
- Некоторые браузеры передают параметр для данных события удержания обратного вызова (это способ выполнения стандартов)
- Другие браузеры (в основном старые IE) вместо этого помещают данные события в
window.event
(к которому обращаются сюда только с event
, что является рискованным, поскольку полагается на отсутствие локальной переменной с этим именем)
Далее, e = e || event;
является стандартным способом сказать "если этот параметр не был передан, по умолчанию он имеет значение после ||
". В этом случае, если параметр события не передан, он ищет глобальную переменную.
e.returnValue
является одним из трех способов остановить событие от его действия по умолчанию. Остальные два: e.preventDefault && e.preventDefault()
(который явно отсутствует в коде, который вы отправили), и return false;
Ответ 2
Эта строка предназначена только для того, чтобы IE8 и ниже функционировали так же, как и все другие браузеры. Все остальные браузеры передают целевой элемент (e
) функции события.
Итак, что делает этот кусок кода:
Если e
существует, держите e
. Если он не существует, вы используете более старую версию IE, и мы назначаем объект windows.event
e
. Теперь все браузеры ведут себя одинаково.
Ответ 3
Этот фрагмент кода проверяет, существует ли объект e
, иначе используйте объект event
и назначьте его элементу e. После этого атрибут returnValue
присваивается false и возвращает false.
Это код, который работает в IE и других браузерах одинаково, независимо от того, называется ли объект события e
или event
.