ฉันเองใช้ฟังก์ชั่น wrapper เพื่อจัดการกับเหตุการณ์ที่สร้างขึ้นด้วยตนเอง รหัสต่อไปนี้จะเพิ่มวิธีการคงที่ในทุก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... */]
)