IE 8 - событие Click пробивает элемент <html>? - PullRequest
2 голосов
/ 28 февраля 2012

Проще говоря:

jQuery("html").click(function(e){
    if (e.target == this){
        alert("this really shouldn't happen");
    }
});

В IE8 оповещение срабатывает во многих местах на странице, включая элементы, вложенные в другие элементы!Есть ли что-нибудь, что могло бы вызвать такое странное поведение?

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

EDIT

Я также подозревал, что что-то не так при использовании инструментов разработчика в IE8 ... когда я использовал элемент "select"щелкнув «инструмент и наведя курсор на нужные места», можно было бы «заштриховать» весь документ, как если бы в этом месте не было потомков (и да, я нажал «Обновить», чтобы убедиться, что Dev Tools имеет обновленную схемудокумент).

РЕДАКТИРОВАТЬ 2

Извините, я забыл упомянуть ... одним из этих проблемных моментов является элемент "dl" ... возможно, IE8 смущаетэто и просто вручить событие документу?

1 Ответ

1 голос
/ 28 февраля 2012

Это происходит из-за различий в событии «пузырение» и событии «захват».

Эта страница хорошо объясняет: http://www.quirksmode.org/js/events_order.html

...