Есть два способа получить объект события внутри функции:
- Первый аргумент в W3C-совместимом браузере (Chrome, Firefox, Safari, IE9 +)
- Объект window.event в Internet Explorer (<= 8)
Если вам нужно поддерживать устаревшие браузеры, которые не следуют рекомендациям W3C, обычно внутри функции вы используете что-то вроде следующего:
function(e) {
var event = e || window.event;
[...];
}
который проверит сначала один, а затем другой и сохранит то, что было найдено внутри переменной события. Однако в встроенном обработчике событий нет e
объекта для использования. В этом случае вам нужно воспользоваться arguments
коллекцией, которая всегда доступна и ссылается на полный набор аргументов, передаваемых функции:
onclick="var event = arguments[0] || window.event; [...]"
Однако, вообще говоря, вы должны избегать встроенных обработчиков событий, если вам нужно что-то сложное, например, остановить распространение. Написание ваших обработчиков событий отдельно и присоединение их к элементам - гораздо лучшая идея в среднесрочной и долгосрочной перспективе, как для удобочитаемости, так и для удобства обслуживания.