개인적으로 래퍼 함수를 사용하여 수동으로 만든 이벤트를 처리합니다. 다음 코드는 모든 Event
인터페이스 에 정적 메서드를 추가하고 (끝으로 끝나는 모든 전역 변수 Event
는 이벤트 인터페이스 임) element.dispatchEvent(MouseEvent.create('click'));
IE9 + 와 같은 함수를 호출 할 수 있습니다 .
(function eventCreatorWrapper(eventClassNames){
eventClassNames.forEach(function(eventClassName){
window[eventClassName].createEvent = function(type,bubbles,cancelable){
var evt
try{
evt = new window[eventClassName](type,{
bubbles: bubbles,
cancelable: cancelable
});
} catch (e){
evt = document.createEvent(eventClassName);
evt.initEvent(type,bubbles,cancelable);
} finally {
return evt;
}
}
});
}(function(root){
return Object.getOwnPropertyNames(root).filter(function(propertyName){
return /Event$/.test(propertyName)
});
}(window)));
편집 : 모든 Event
인터페이스 를 찾는 기능을 필요한 이벤트 인터페이스 ( ['Event', 'MouseEvent', 'KeyboardEvent', 'UIEvent' /*, etc... */]
) 만 변경하는 배열로 바꿀 수도 있습니다 .