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