2013-02-11 3 views
1

Есть ли способ определить, поддерживает ли браузер поддержку захвата события, а также события пузыря? Я проверил http://modernizr.com/, но не вижу никакой информации в документации.обнаружение поддержки захвата событий javascript

Я правильно понял, что IE < 9 не поддерживает захват событий, но в других браузерах это должно быть хорошо?

Для ясности я хочу определить, поддерживает ли браузер фазу захвата события модели DOM события, а также фазу пузырьков событий.

+1

Что именно вы подразумеваете под «захватом событий»? Каждый браузер с 1998 года поддерживает * некоторые * события. –

+3

@Pekka 웃 - Я предполагаю, что он означает фазу захвата модели событий DOM (в отличие от фазы пузырьков, где вы чаще всего слушаете событие). –

+0

yes Я имел в виду фазу захвата события над фазой пузырьков событий – dannym

ответ

1

Там могут быть лучшие подходы к этому, но это первое, что я придумал. Вы должны были бы создать элемент, привязать обработчик событий к нему в фазе захвата, огнь события на нем, и проверьте eventPhase свойства в обработчике события:

var button = document.getElementById("example"); 

document.addEventListener("click", function (e) { 
    console.log(e.eventPhase); // 1 === capture, 2 === target, 3 === bubble 
}, true); 

evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); 
button.dispatchEvent(evt); 

Вы, вероятно, хотите добавить во всех видах других проверок (например, для поддержки dispatchEvent), и вам нужно будет фактически создать элемент button в коде (и вставить его в DOM, скрытый).

Вот fiddle, содержащий вышеуказанный код, чтобы вы начали.

+0

[docs для 'event.eventPhase'] (https://developer.mozilla.org/en-US/docs/Web/API/event.eventPhase), для Справка –

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