Почему этот обработчик событий использует "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.