Ich erstelle ein Ereignis. Verwenden Sie daher den DOM-Ereigniskonstruktor:
new Event('change');
Dies funktioniert in modernen Browsern einwandfrei, schlägt jedoch in Internet Explorer 9, 10 und 11 fehl mit:
Object doesn't support this action
Wie kann ich den Internet Explorer reparieren (idealerweise über eine Polyfüllung)? Wenn ich nicht kann, gibt es eine Problemumgehung, die ich verwenden kann?
internet-explorer-9
internet-explorer-10
internet-explorer-11
dom-events
custom-events
Mikemaccana
quelle
quelle
Antworten:
Es gibt eine IE-Polyfüllung für den CustomEvent-Konstruktor bei MDN . Das Hinzufügen von CustomEvent zum IE und dessen Verwendung funktioniert stattdessen.
quelle
window.Event= CustomEvent
in der letzten Zeile.StorageEvent
undtypeof(StorageEvent)
arbeite nicht in MS Edge. Das funktioniert :try { new StorageEvent(); } catch (e) { /* polyfill */ }
.Ich denke, dass die beste Lösung, um Ihr Problem zu lösen und sich mit der Erstellung browserübergreifender Ereignisse zu befassen, Folgendes ist:
quelle
return event
so sein sollte, damit ich es weitergeben kanndispatchEvent()
.initEvent
Ist alt und veraltet , müssen Sie zumindest die moderne Methode verwenden und als Fallback die veraltete Methode verwenden.CustomEvent
Ermöglicht die Weitergabe benutzerdefinierter Daten durch diedetail
Option undEvent
nicht. Liege ich falsch?Dieses Paket macht die Magie:
https://www.npmjs.com/package/custom-event-polyfill
Fügen Sie das Paket hinzu und senden Sie die Veranstaltung wie folgt aus:
quelle
Wenn Sie nur versuchen, ein einfaches Ereignis wie das HTML-Umschaltereignis auszulösen, funktioniert dies sowohl in Internet Explorer 11 als auch in den anderen Browsern:
quelle
es6
let
var
IE 9
, und möglicherweise eine Person, die nach einer Antwort sucht und diesen Thread findet, eine App für ein altes Bankensystem oder ein anderes System für Geschäftskunden, die keine Kontrolle über ihre Computer haben und dies sind verpflichtet, mit alten IE zu arbeiten. Dies hat nichts mit Microsoft Support zu tun ..Es gibt einen Polyfill-Service, der dieses und andere für Sie patchen kann
https://polyfill.io/v3/url-builder/
quelle
Das
custom-event
npm-Paket hat bei mir wunderbar funktionierthttps://www.npmjs.com/package/custom-event
quelle
Ich persönlich verwende eine Wrapper-Funktion, um manuell erstellte Ereignisse zu verarbeiten. Der folgende Code fügt eine statische Methode für alle
Event
Schnittstellen hinzu (alle globalen Variablen, die mit enden,Event
sind eine Ereignisschnittstelle) und ermöglicht es Ihnen, Funktionen wieelement.dispatchEvent(MouseEvent.create('click'));
unter IE9 + aufzurufen .BEARBEITEN: Die Funktion zum Auffinden aller
Event
Schnittstellen kann auch durch ein Array ersetzt werden, um nur die von Ihnen benötigten Ereignisschnittstellen zu ändern (['Event', 'MouseEvent', 'KeyboardEvent', 'UIEvent' /*, etc... */]
).quelle