Аргументы onclick в стиле Firefox в IE

В firefox, когда вы добавляете обработчик события onclick к методу, объект события автоматически передается этому методу. Это позволяет, среди прочего, определять, какой именно элемент был нажат. Например

document.body.onclick = handleClick;

function handleClick(e)
{
    // this works if FireFox
    alert(e.target.className);
}

Есть ли способ приблизиться к этому в IE? мне нужно иметь возможность определять, какой элемент был нажат из обработчика событий в элементе body.

Нет особого смысла беспокоиться о подобных несоответствиях в javascript, вы ДОЛЖНЫ использовать фреймворк (например, jQuery) для обработки такой грубой работы.

micmcg 24.11.2008 02:15
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
1
5 858
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Я думаю, что 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'); 
}

Очевидно, что расширенная модель регистрации событий имеет свои преимущества, но по большей части люди могут просто использовать традиционные обозначения. (Одно из преимуществ традиционной нотации состоит в том, что она лучше работает с программами чтения с экрана)

James 21.11.2008 18:17
Ответ принят как подходящий

Вот как я могу это сделать, если я не могу использовать 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 нет смысла передавать событие.

James 21.11.2008 18:19

Да, в самом деле. Я просто передаю его, чтобы показать, как это делается, если нужно.

Atanas Korchev 21.11.2008 18:52

Другие вопросы по теме