2013-02-11 2 views
1

브라우저가 이벤트 캡처 및 이벤트 버블 링을 지원하는지 감지하는 방법이 있습니까? http://modernizr.com/을 확인했지만 설명서에 정보가 표시되지 않습니다.이벤트 캡처 지원 검색 자바 스크립트

IE < 9는 이벤트 캡처를 지원하지 않지만 다른 브라우저에서는 괜찮을 것이라고 생각합니다.

명확성을 위해 브라우저가 이벤트 버블 단계뿐만 아니라 이벤트 DOM 모델의 이벤트 캡처 단계를 지원하는지 감지하고 싶습니다.

+1

"이벤트 캡처"란 정확히 무엇을 의미합니까? 1998 년 이후의 모든 브라우저는 * 일부 이벤트를 지원합니다. –

+3

@Pekka 웃음 - 그는 그가 DOM 이벤트 모델의 캡처 단계를 의미한다고 가정합니다 (거품 이벤트에 반대하는 것으로, 가장 자주 이벤트를 수신합니다). –

+0

예 이벤트 버블 페이즈에 걸친 이벤트 캡처 단계를 의미 함 – 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

[eventsvent.eventPhase'에 대한 문서] (https://developer.mozilla.org/en-US/docs/Web/API/event.eventPhase), for 참고 –