Odpowiedz

22

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/

+1

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

+0

Zgadza się. Możesz wyodrębnić kod uruchamiania w osobnej metodzie, która obsłuży wszystkie przeglądarki. – Strelok

+4

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

0

Znalazłem thread omawiając twój problem. otwórz this i spróbuj uruchomić w ie9.

mam nadzieję, że to pomoże. dzięki!