Ove possibile, preferisco chiamare la funzione piuttosto che inviare un evento. Funziona bene se hai il controllo sul codice che vuoi eseguire, ma vedi sotto per i casi in cui non possiedi il codice.
window.onresize = doALoadOfStuff;
function doALoadOfStuff() {
//do a load of stuff
}
In questo esempio, è possibile chiamare la doALoadOfStuff
funzione senza inviare un evento.
Nei tuoi browser moderni, puoi attivare l'evento usando:
window.dispatchEvent(new Event('resize'));
Questo non funziona in Internet Explorer, dove dovrai fare il longhand:
var resizeEvent = window.document.createEvent('UIEvents');
resizeEvent.initUIEvent('resize', true, false, window, 0);
window.dispatchEvent(resizeEvent);
jQuery ha il trigger
metodo , che funziona in questo modo:
$(window).trigger('resize');
E ha l'avvertenza:
Sebbene .trigger () simuli l'attivazione di un evento, completo di un oggetto evento sintetizzato, non replica perfettamente un evento naturale.
Puoi anche simulare eventi su un elemento specifico ...
function simulateClick(id) {
var event = new MouseEvent('click', {
'view': window,
'bubbles': true,
'cancelable': true
});
var elem = document.getElementById(id);
return elem.dispatchEvent(event);
}