Объект не поддерживает это действие IE9 с инициализацией CustomEvent - программирование
Подтвердить что ты не робот

Объект не поддерживает это действие IE9 с инициализацией CustomEvent

В IE9 появляется следующая ошибка:

"Объект не поддерживает это действие".

Есть разные вопросы по этому поводу, но мой специально для следующего кода:

 var myEvent = new CustomEvent("additem");

По моему мнению, CustomEvent поддерживается в IE9 как команда манипуляции DOM. Это отлично работает в Chrome без каких-либо исключений.

У кого-нибудь есть эта проблема и знаете, как ее решить? Спасибо.

4b9b3361

Ответ 1

Пользовательские события Afaik не поддерживаются в IE, только в обычных браузерах. Я предлагаю использовать библиотеку javascript, которая обеспечивает независимую от браузера реализацию, такую ​​как JQuery trigger: http://api.jquery.com/trigger/

Ответ 2

Вы можете использовать функцию javascript для определения, является ли браузер IE11 или ниже, а затем применить следующий polyfill:

    (function () {
      function CustomEvent ( event, params ) {
        params = params || { bubbles: false, cancelable: false, detail: undefined };
        var evt = document.createEvent( 'CustomEvent' );
        evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );
        return evt;
      };

      CustomEvent.prototype = window.Event.prototype;
      window.CustomEvent = CustomEvent;
    })();

polyfill сверху берется из MDN: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent

Ответ 3

Попробуйте этот polyfill, который не заменит собственный (и функциональный) метод CustomEvent.

(function () {
  try {
    new CustomEvent('test');
    return;
  } catch(e) {
    // ignore this error and continue below
  }

  function CustomEvent ( event, params ) {
    params = params || { bubbles: false, cancelable: false, detail: undefined };
    var evt = document.createEvent( 'CustomEvent' );
    evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );
    return evt;
  };

  CustomEvent.prototype = window.Event.prototype;
  window.CustomEvent = CustomEvent;
})();

Ответ 4

Следующий polyfill не заменит родной CustomEvent(),
Частичный источник: MDN CustomEvent():

(function () {

  if (typeof CustomEvent === 'function') { return; }

  function customEvent(event, params) {

      params = params || {bubbles: false, cancelable: false, detail: undefined};

      var evt = document.createEvent('CustomEvent');

      evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);

      return evt;
  }

  customEvent.prototype = window.Event.prototype;
  window.CustomEvent = customEvent;
})();