Raczej frustrujący czas tutaj z IE9. Ten kod działa w IE7/8, ale nie 9.Dlaczego .fireEvent() nie działa w IE9?
document.getElementById('id').fireEvent("OnChange");
Dowolny wgląd, dlaczego?
Raczej frustrujący czas tutaj z IE9. Ten kod działa w IE7/8, ale nie 9.Dlaczego .fireEvent() nie działa w IE9?
document.getElementById('id').fireEvent("OnChange");
Dowolny wgląd, dlaczego?
W wersjach IE> = 9 i wszystkie inne przeglądarki należy użyć metody dispatchEvent
:
var event = document.createEvent("HTMLEvents");
event.initEvent("change",true,false);
document.getElementById("id").dispatchEvent(event);
Wyjazd http://jsfiddle.net/QKsvv/
Zaznaczając 'if (id.dispatchEvent)' 'następnie else if (id .fireEvent) 'Mogę teraz używać kodu innego niż ie8 do pracy dla ie9. Wygląda na to, że IE wreszcie się złapie? – styler1972
Zgadza się. Możesz wyodrębnić kod uruchamiania w osobnej metodzie, która obsłuży wszystkie przeglądarki. – Strelok
Jako dodatkowe informacje działa to tylko w przypadku elementów, które znajdują się w modelu DOM na żywo. Jeśli dynamicznie tworzysz obiekty i chcesz symulować takie rzeczy jak kliknięcia na nich za pomocą metody dispatchEvent, * masz *, aby najpierw dodać je do DOM. Jeśli tego nie zrobisz, nadal możesz wysyłać zdarzenia, ale będziesz rozdzierać włosy, zastanawiając się, dlaczego funkcja działa poprawnie bez uruchamiania programu obsługi zdarzeń. –