Je crée un événement, alors utilisez le constructeur d'événement DOM:
new Event('change');
Cela fonctionne bien dans les navigateurs modernes, mais dans Internet Explorer 9, 10 et 11, cela échoue avec:
Object doesn't support this action
Comment puis-je réparer Internet Explorer (idéalement via un polyfill)? Si je ne peux pas, y a-t-il une solution de contournement que je peux utiliser?
internet-explorer-9
internet-explorer-10
internet-explorer-11
dom-events
custom-events
Mikemaccana
la source
la source
Réponses:
Il existe un polyfill IE pour le constructeur CustomEvent chez MDN . L'ajout de CustomEvent à IE et son utilisation fonctionnent à la place.
la source
window.Event= CustomEvent
sur la dernière ligne.StorageEvent
ettypeof(StorageEvent)
ne fonctionne pas dans MS Edge. Cela fonctionne:try { new StorageEvent(); } catch (e) { /* polyfill */ }
.Je pense que la meilleure solution pour résoudre votre problème et gérer la création d'événements multi-navigateurs est:
la source
return event
pour que je puisse le transmettredispatchEvent()
.initEvent
est vieux et obsolète , vous devez au moins utiliser la méthode moderne et comme solution de secours, utilisez la méthode obsolète.CustomEvent
permet de transmettre des données personnalisées via l'detail
option, etEvent
ne le fait pas. Ai-je tort?Ce package fait la magie:
https://www.npmjs.com/package/custom-event-polyfill
Incluez le colis et envoyez l'événement comme suit:
la source
Si vous essayez simplement de distribuer un événement simple comme l'événement de bascule HTML, cela fonctionne dans Internet Explorer 11 ainsi que dans les autres navigateurs:
la source
es6
let
(et ne l'utilisez pasvar
) avec un code censé fonctionner sur l'ancien IE .. cela pourrait dérouter les débutants qui vont copier-coller ceciIE 9
et au-dessus, et peut-être qu'une personne cherchant une réponse qui trouve ce fil, développe une application pour le système bancaire hérité ou un autre système pour les clients commerciaux qui n'ont aucun contrôle sur leurs ordinateurs et sont obligé de travailler avec l'ancien IE. cela n'a rien à voir avec le support Microsoft ..Il existe un service polyfill qui peut corriger cela et d'autres pour vous
https://polyfill.io/v3/url-builder/
la source
le
custom-event
package npm a parfaitement fonctionné pour moihttps://www.npmjs.com/package/custom-event
la source
J'utilise personnellement une fonction wrapper pour gérer les événements créés manuellement. Le code suivant ajoutera une méthode statique sur toutes les
Event
interfaces (toutes les variables globales se terminant parEvent
sont une interface d'événement) et vous permettra d'appeler des fonctions commeelement.dispatchEvent(MouseEvent.create('click'));
sur IE9 +.EDIT: La fonction de recherche de toutes les
Event
interfaces peut également être remplacée par un tableau pour modifier uniquement les interfaces d'événement dont vous avez besoin (['Event', 'MouseEvent', 'KeyboardEvent', 'UIEvent' /*, etc... */]
).la source