JavaScript/Core

Document.createEvent()

Jundol 2015. 6. 10. 17:05


Document.createEvent()

DOM 레벨 2 이벤트

지원 브라우저
크롬 15, FF 11, Opera 11.6, Safari 6
IE는 DOM Events 모듈을 지원하지 않기 때문에 지원되지않는다.

Event createEvent(String eventType)

         throws DOMException

반환값
지정된 타입을 갖는 새로 생성된 Event 객체.

전달인자
eventType --> 원하는 Event 객체에 대한 이벤트 모듈의 이름.

예외 
현재 구현이 요청된 타입의 이벤트를 지원하지 않으면, code 값이 NOT_SUPPORTED_ERR 인 DOMException 을 발생시킨다.

설명
파라미터로 전달받은 이벤트타입을 갖는 새 이벤트 객체를 생성한다. 주의점은 파라미터의 값이 생성할 인터페이스(단수형)의 이름이 아니라 해당 인터페이스를 정의하는 DOM모듈(복수형)의 이름이어야 한다는 것이다. 


 eventType 전달인자

이벤트 인터페이스 

초기화 메소드 

HTMLEvents 

Event 

initEvent() 

MouseEvents 

MouseEvent 

initMouseEvent() 

UIEvents 

UIEvent 

initUIEvent() 


Document.createEvent() 메소드로 Event객체를 생성한 후에는 반드시 위 표에 있는 초기화 메소드를 이용해서 그 객체를 초기화 해야한다.


예제
구식방법
자바에서 영감을받아 작성한 구식이벤트 발생방법.

// Create the event.
var event = document.createEvent('Event');

// Define that the event name is 'build'.
event.initEvent('build', true, true);

// Listen for the event.
document.addEventListener('build', function (e) {
  // e.target matches document from above
}, false);

// target can be any Element or other EventTarget.
document.dispatchEvent(event);

이벤트를 정의하는 굉장히 오래된 기법이다. 없어질 기법이라고 봐도 무방할것 같다.

참고
1. 자바스크립트 완벽가이드 별책 page.1010
2. 모질라 개발자네트워크
https://developer.mozilla.org/en-US/docs/Web/API/Document/createEvent