Tempo piuttosto frustrante qui con IE9. Questo codice funziona in IE7/8, ma non 9.Perché .fireEvent() non funziona in IE9?
document.getElementById('id').fireEvent("OnChange");
Qualche idea sul perché?
Tempo piuttosto frustrante qui con IE9. Questo codice funziona in IE7/8, ma non 9.Perché .fireEvent() non funziona in IE9?
document.getElementById('id').fireEvent("OnChange");
Qualche idea sul perché?
Nelle versioni di IE> = 9 e tutti gli altri browser si dovrebbe utilizzare il metodo dispatchEvent
:
var event = document.createEvent("HTMLEvents");
event.initEvent("change",true,false);
document.getElementById("id").dispatchEvent(event);
Partenza http://jsfiddle.net/QKsvv/
Controllando 'if (id.dispatchEvent)' 'quindi else if (id .fireEvent) 'Ora posso usare il codice non-ie8 per funzionare per ie9. Sembra che IE stia finalmente prendendo piede? – styler1972
Esatto. Puoi estrarre il codice di attivazione in un metodo separato che gestirà tutti i browser. – Strelok
Come informazioni aggiuntive, questo funziona solo per gli elementi che si trovano nel DOM live. Se fai dinamicamente degli oggetti e vuoi simulare cose come i clic su di essi usando dispatchEvent, devi * aver * prima di aggiungerli al DOM. Se non lo fai, puoi comunque inviare eventi, ma ti strapperai i capelli chiedendoti perché la funzione viene eseguita correttamente senza attivare il gestore di eventi. –