Tiempo bastante frustrante aquí con IE9. Este código funciona en IE7/8, pero no en 9.¿Por qué .fireEvent() no funciona en IE9?
document.getElementById('id').fireEvent("OnChange");
¿Alguna idea de por qué?
Tiempo bastante frustrante aquí con IE9. Este código funciona en IE7/8, pero no en 9.¿Por qué .fireEvent() no funciona en IE9?
document.getElementById('id').fireEvent("OnChange");
¿Alguna idea de por qué?
En las versiones de IE> = 9 y todos los demás navegadores se debe utilizar el método de dispatchEvent
:
var event = document.createEvent("HTMLEvents");
event.initEvent("change",true,false);
document.getElementById("id").dispatchEvent(event);
Salida http://jsfiddle.net/QKsvv/
Comprobando si '(id.dispatchEvent)' 'continuación else if (id .fireEvent) 'Ahora puedo usar el código non-ie8 para trabajar para ie9. Parece que IE finalmente se está poniendo de moda? – styler1972
Eso es correcto. Puede extraer el código de activación en un método separado que manejará todos los navegadores. – Strelok
Como información adicional, esto solo funciona para los elementos que están en el DOM en vivo. Si dinámicamente haces objetos y quieres simular cosas como clics en ellos usando dispatchEvent, * tienes * para agregarlos al DOM primero. Si no lo haces, aún puedes enviar eventos, pero te arrancarás el pelo preguntándote por qué la función se ejecuta correctamente sin activar tu controlador de eventos. –