В firefox, когда вы добавляете обработчик события onclick к методу, объект события автоматически передается этому методу. Это позволяет, среди прочего, определять, какой именно элемент был нажат. Например
document.body.onclick = handleClick;
function handleClick(e)
{
// this works if FireFox
alert(e.target.className);
}
Есть ли способ приблизиться к этому в IE? мне нужно иметь возможность определять, какой элемент был нажат из обработчика событий в элементе body.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я думаю, что IE использует переменную event. Посмотрите, работает ли это?
В IE это
e.srcElement
Это не одобренная нотация для добавления событий к узлам dom.
if (el.addEventListener){
el.addEventListener('click', modifyText, false);
} else if (el.attachEvent){
el.attachEvent('onclick', modifyText);
}
Рекомендуемая нотация для привязки событий щелчка к кроссбраузерности.
Видеть:
Кроме того, при щелчке по событию выполняемая функция обратного вызова содержит объект «this», который является объектом, по которому был выполнен щелчок.
function foo() {
window.open(this.src, '_blank');
}
Очевидно, что расширенная модель регистрации событий имеет свои преимущества, но по большей части люди могут просто использовать традиционные обозначения. (Одно из преимуществ традиционной нотации состоит в том, что она лучше работает с программами чтения с экрана)
Вот как я могу это сделать, если я не могу использовать jQuery
document.body.onclick = handleClick;
function handleClick(e)
{
//If "e" is undefined use the global "event" variable
e = e || event;
var target = e.srcElement || e.target;
alert(target.className);
}
И вот решение jQuery
$(document.body).click(function(e) {
alert($(this).attr("class"));
});
В вашем примере jQuery нет смысла передавать событие.
Да, в самом деле. Я просто передаю его, чтобы показать, как это делается, если нужно.
Нет особого смысла беспокоиться о подобных несоответствиях в javascript, вы ДОЛЖНЫ использовать фреймворк (например, jQuery) для обработки такой грубой работы.