Я создаю событие, поэтому используйте конструктор DOM Event:
new Event('change');
Это отлично работает в современных браузерах, но в Internet Explorer 9, 10 и 11 не работает:
Object doesn't support this action
Как исправить Internet Explorer (в идеале через полифилл)? Если я не могу, могу ли я использовать обходной путь?
Ответы:
В MDN есть полифил IE для конструктора CustomEvent . Добавление CustomEvent в IE и его использование работает.
источник
window.Event= CustomEvent
на последней строчке.StorageEvent
иtypeof(StorageEvent)
не работает в MS Edge. Это работает:try { new StorageEvent(); } catch (e) { /* polyfill */ }
.Я думаю, что лучшее решение для решения вашей проблемы и создания кросс-браузерных событий:
источник
return event
чтобы я мог передать егоdispatchEvent()
.initEvent
является устаревшим и устаревшим , вам нужно хотя бы использовать современный способ и в качестве запасного варианта использовать устаревший способ.CustomEvent
позволяет передавать пользовательские данные черезdetail
опцию иEvent
не делает. Я ошибся?Этот пакет творит чудеса:
https://www.npmjs.com/package/custom-event-polyfill
Включите пакет и отправьте событие следующим образом:
источник
Если вы просто пытаетесь отправить простое событие, такое как событие переключения HTML, это работает в Internet Explorer 11, а также в других браузерах:
источник
es6
let
(и не используетеvar
) код, который должен работать в старом IE .. это может запутать новичков, которыеIE 9
содержится конкретный запрос и выше, и, возможно, человек, ищущий ответ, который найдет эту ветку, разрабатывает приложение для устаревшей банковской системы или какой-либо другой системы для бизнес-клиентов, которые не контролируют свои компьютеры и обязан работать со старым IE. это не имеет ничего общего с поддержкой Microsoft ..Есть сервис polyfill, который может исправить это и другие за вас
https://polyfill.io/v3/url-builder/
источник
custom-event
пакет NPM работал прекрасно для меняhttps://www.npmjs.com/package/custom-event
источник
Я лично использую функцию-оболочку для обработки событий, созданных вручную. Следующий код добавит статический метод для всех
Event
интерфейсов (все глобальные переменные, оканчивающиесяEvent
на интерфейс событий) и позволит вам вызывать функции, какelement.dispatchEvent(MouseEvent.create('click'));
в IE9 +.РЕДАКТИРОВАТЬ: функцию поиска всех
Event
интерфейсов также можно заменить массивом, чтобы изменить только нужные вам интерфейсы событий (['Event', 'MouseEvent', 'KeyboardEvent', 'UIEvent' /*, etc... */]
).источник