DispatchEvent не работает в IE11
Я использую следующий код для отправки в форму:
element.dispatchEvent(new Event("submit"));
Инспектор возвращает ошибку:
Объект не поддерживает это действие
Это работает в Chrome.
Цель этой команды - сделать вызов деления на событие отправки в форме при нажатии.
JQuery не вариант
Ответы
Ответ 1
Это лучший способ заставить его работать для IE11 и других браузеров с учетом будущих изменений.
var event;
if(typeof(Event) === 'function') {
event = new Event('submit');
}else{
event = document.createEvent('Event');
event.initEvent('submit', true, true);
}
$el.dispatchEvent(event);
Ответ 2
У меня была такая же проблема, но в IE11 работает следующее:
var event = document.createEvent("Event");
event.initEvent("submit", false, true);
// args: string type, boolean bubbles, boolean cancelable
element.dispatchEvent(event);
Ответ 3
Лучше всего использовать полифайл, чтобы это исправить. (На заказ событий polyfill)
# using yarn
$ yarn add custom-event-polyfill
# using npm
$ npm install --save custom-event-polyfill
затем включите/потребуйте его в своем JavaScript
import 'custom-event-polyfill'
;
https://www.npmjs.com/package/custom-event-polyfill
Ответ 4
Я собрал бит и куски разных подходов и получил это для работы:
var customEvent = document.createEvent('HTMLEvents');
customEvent.initEvent('myCustomEvent', true, true);
document.dispatchEvent(customEvent);
Честно говоря, это не имеет большого значения для меня. Он создает событие (называя его HTMLEvents
, как представляется, требуется) в документе, а затем отправляет и инициализирует это событие другим именем. Если кто-нибудь может объяснить это лучше, добавьте комментарий ниже, чтобы он мог быть включен в ответ.
В любом случае, я могу прослушать это пользовательское событие в IE11 (и современных браузерах) со стандартным прослушивателем событий:
document.addEventListener('myCustomEvent', function(){
console.log('Event received.');
});