Подтвердить что ты не робот

DispatchEvent не работает в IE11

Я использую следующий код для отправки в форму:

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

Инспектор возвращает ошибку: Объект не поддерживает это действие

Это работает в Chrome.

Цель этой команды - сделать вызов деления на событие отправки в форме при нажатии.

JQuery не вариант

4b9b3361

Ответ 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.');
});