2008-11-21 3 views
4

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

document.body.onclick = handleClick; 

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

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

+0

Существует мало смысла беспокоиться о inconcistancies как это в JavaScript , вам следует использовать фреймворк (например, jQuery) для обработки такого рода ворчания. – micmcg 2008-11-23 23:15:03

ответ

7

Вот как бы я это сделать в случае, если я не могу использовать 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")); 
}); 
+0

В вашем примере jQuery нет смысла передавать событие. – James 2008-11-21 15:19:19

0

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

3

Это не является утвержденным нотация для добавления событий в DOM узлов.

if (el.addEventListener){ 
    el.addEventListener('click', modifyText, false); 
} else if (el.attachEvent){ 
    el.attachEvent('onclick', modifyText); 
} 

Рекомендованная нотация для привязки событий кликов кросс-браузер.

См:

Кроме того, когда событие щелчка, функция обратного вызова, которая выполняется содержит объект «это», которое является объектом, который был щелкнул ,

function foo() { 
    window.open(this.src, '_blank'); 
} 
+0

Очевидно, что расширенная модель регистрации событий имеет свои преимущества, но по большей части люди могут просто использовать традиционные обозначения. (Одно из достоинств традиционной нотации заключается в том, что она лучше работает с программами для чтения с экрана) – James 2008-11-21 15:17:44

Смежные вопросы