Saya pribadi menggunakan fungsi pembungkus untuk menangani acara yang dibuat secara manual. Kode berikut akan menambahkan metode statis pada semua Event
antarmuka (semua variabel global yang diakhiri Event
adalah antarmuka Acara) dan memungkinkan Anda untuk memanggil fungsi seperti element.dispatchEvent(MouseEvent.create('click'));
pada 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)));
EDIT: Fungsi untuk menemukan semua Event
antarmuka juga dapat diganti dengan array untuk mengubah hanya antarmuka Acara yang Anda butuhkan ( ['Event', 'MouseEvent', 'KeyboardEvent', 'UIEvent' /*, etc... */]
).