Почему аргумент события является необязательным в анонимных функциях в Javascript?
Они не являются кросс-браузерными. У Microsoft было global event
, которое было установлено на текущее событие перед вызовом обработчиков с использованием их attachEvent
(и onxyz
) обработчиков. Стандарт DOM пошел другим путем: передав event
в качестве аргумента.
Chrome и некоторые другие браузеры делают то и другое, так что Microsoft * специфицированный код c работает на них. Но не все браузеры делают. Например, Firefox нет, если только вы не установили специальное предпочтение в пользовательских настройках ( детали ).
Вывод ключа: используйте современную обработку событий (addEventListener
, et c.), который поддерживается во всех браузерах, кроме IE8 и более ранних, и объявляет параметр event
для функции:
window.addEventListener("keydown", handler);
// ...
function handler(event) {
// ...
}
или (имя функции необязательно, но полезно в стек вызовов ошибок):
window.addEventListener("keydown", function handler(event) {
// ...
});