Аргументы в стиле Firefox в IE - PullRequest
4 голосов
/ 21 ноября 2008

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

document.body.onclick = handleClick;

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

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

Ответы [ 4 ]

7 голосов
/ 21 ноября 2008

Вот как мне это сделать, если я не могу использовать 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"));
});
3 голосов
/ 21 ноября 2008

Это не одобренная нотация для добавления событий в 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'); 
}
2 голосов
/ 21 ноября 2008

В IE это

e.srcElement
0 голосов
/ 21 ноября 2008

Я думаю, что IE использует переменную с именем event. Посмотрите, работает ли это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...