risposta

22

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/

+1

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

+0

Esatto. Puoi estrarre il codice di attivazione in un metodo separato che gestirà tutti i browser. – Strelok

+4

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. –

0

ho trovato un thread discutendo il tuo problema. apri this e prova ad eseguire in ie9.

spero che possa essere d'aiuto. Grazie!