20

ich den folgenden Code bin mit einem Formular einreichen:dispatch nicht in IE11 Arbeits

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

Inspektor gibt den Fehler: Objekt diese Aktion unterstützt

Das in Chrome funktioniert.

Der Zweck dieses Befehls besteht darin, eine Unterabteilung das submit-Ereignis auf einem Formular aufrufen zu lassen, wenn darauf geklickt wird.

JQuery ist keine Option

+0

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

+0

Ich bin in Rand das gleiche Problem haben. Konntest du eine Lösung finden? – spez86

Antwort

26

ich das gleiche Problem hatte gerade, aber die folgende scheint in IE11 zu arbeiten:

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

Nein, benutzen Sie das nicht. Es ist gemäß https://developer.mozilla.org/en-US/docs/Web/API/Event/initEvent veraltet. – Gaui

+4

Sie MÜSSEN dies verwenden, wenn Sie möchten, dass es auf IE funktioniert, siehe https: //developer.mozilla. org/de-DE/docs/Web/Guide/Ereignisse/Creating_and_triggering_events # Creating_custom_events und https://msdn.microsoft.com/en-us/library/ff975247(v=vs.85).aspx Dies ist derzeit möglicherweise MS aktualisieren ihre Software. – fbiazi

+0

Ja, du musst das verwenden, wenn du willst, dass es leider mit IE11 kompatibel ist. – yoyodunno

0

ich Stücke von verschiedenen Ansätzen zusammengebaut und bekam dies zu Arbeit:

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

Um ehrlich zu sein, das macht nicht viel Sinn für mich. Es erstellt ein Ereignis (mit dem Namen HTMLEvents scheint erforderlich) für das Dokument, dann geht und initialisiert das Ereignis mit einem anderen Namen. Wenn jemand dies besser erklären kann, fügen Sie bitte einen Kommentar hinzu, damit er in die Antwort aufgenommen werden kann.

Auf jedem Fall, ich bin in IE11 auf dieses benutzerdefinierten Ereignis hören kann (und modernen Browser) mit einem Standard-Ereignis-Listener:

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

Dies ist der beste Weg, um es für IE11 arbeiten zu lassen und andere Browser mit Berücksichtigung zukünftiger Änderungen.

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

$el.dispatchEvent(event);