20

Używam następujący kod do przedstawienia postaci:dispatchEvent nie pracuje w IE11

element.dispatchEvent(new Event("submit")); 

Inspektor zwraca błąd: Obiekt nie obsługuje tej akcji

To działa w Chrome.

Celem tego polecenia jest utworzenie wywołania dzielenia zdarzenia przesyłania w formularzu po kliknięciu.

Jquery nie jest opcją

+0

IE dokumentacja: http://msdn.microsoft.com/en-us/library/ie/ff975247%28v=vs.85%29.aspx –

+0

Mam ten sam problem w Edge. Czy byłeś w stanie znaleźć rozwiązanie? – spez86

Odpowiedz

26

prostu miałem ten sam problem, ale następujący wydaje się działać w IE11:

var event = document.createEvent("Event"); 
event.initEvent("submit", false, true); 
// args: string type, boolean bubbles, boolean cancelable 
element.dispatchEvent(event); 
+0

Nie, nie używaj tego. jest przestarzałe, zgodnie z https://developer.mozilla.org/en-US/docs/Web/API/Event/initEvent – Gaui

+4

MUSISZ użyć tego, jeśli chcesz, aby działało na IE, zobacz https: //developer.mozilla. org/pl-US/docs/Web/Guide/Events/Creating_and_triggering_events # Creating_custom_events i https://msdn.microsoft.com/en-us/library/ff975247(v=vs.85).aspx To jest obecnie możliwe bądź MS zaktualizuj swoje oprogramowanie. – fbiazi

+0

Tak, musisz użyć tego, jeśli chcesz, aby była zgodna z IE11 niestety. – yoyodunno

0

I zmontowane kawałki różnych podejść i dostał to praca:

var customEvent = document.createEvent('HTMLEvents'); 
customEvent.initEvent('myCustomEvent', true, true); 
document.dispatchEvent(customEvent); 

Szczerze mówiąc, nie ma to dla mnie większego sensu. Tworzy zdarzenie (nazywanie go HTMLEvents wydaje się być wymagane) na dokumencie, a następnie uruchamia to zdarzenie z inną nazwą. Jeśli ktokolwiek może to wyjaśnić lepiej, dodaj komentarz poniżej, aby mógł zostać włączony do odpowiedzi.

W każdym razie, jestem w stanie słuchać tego niestandardowego wydarzenia w IE11 (i nowoczesnych przeglądarek) ze standardowym detektora zdarzeń:

document.addEventListener('myCustomEvent', function(){ 
    console.log('Event received.'); 
}); 
0

Jest to najlepszy sposób, aby to działało na IE11 i inne przeglądarki z uwzględnieniem przyszłych zmian.

if(typeof(Event) === 'function') { 
    var event = new Event('submit'); 
}else{ 
    var event = document.createEvent('Event'); 
    event.initEvent('submit', true, true); 
} 

$el.dispatchEvent(event);