Dans la mesure du possible, je préfère appeler la fonction plutôt que de dispatcher un événement. Cela fonctionne bien si vous avez le contrôle du code que vous voulez exécuter, mais voyez ci-dessous les cas où vous ne possédez pas le code.
window.onresize = doALoadOfStuff;
function doALoadOfStuff() {
//do a load of stuff
}
Dans cet exemple, vous pouvez appeler le doALoadOfStuff
sans envoyer d'événement.
Dans vos navigateurs modernes, vous pouvez déclencher l'événement en utilisant :
window.dispatchEvent(new Event('resize'));
Cela ne fonctionne pas dans Internet Explorer, où vous devrez le faire à la main :
var resizeEvent = window.document.createEvent('UIEvents');
resizeEvent.initUIEvent('resize', true, false, window, 0);
window.dispatchEvent(resizeEvent);
jQuery a le trigger
méthode qui fonctionne comme suit :
$(window).trigger('resize');
Et a la mise en garde :
Bien que .trigger()
simule l'activation d'un événement, avec un objet événement synthétisé, il ne reproduit pas parfaitement un événement naturel.
Vous pouvez également simuler des événements sur un élément spécifique...
function simulateClick(id) {
var event = new MouseEvent('click', {
'view': window,
'bubbles': true,
'cancelable': true
});
var elem = document.getElementById(id);
return elem.dispatchEvent(event);
}