Saya pribadi menggunakan fungsi pembungkus untuk menangani acara yang dibuat secara manual. Kode berikut akan menambahkan metode statis pada semua Eventantarmuka (semua variabel global yang diakhiri Eventadalah 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 Eventantarmuka juga dapat diganti dengan array untuk mengubah hanya antarmuka Acara yang Anda butuhkan ( ['Event', 'MouseEvent', 'KeyboardEvent', 'UIEvent' /*, etc... */]).