web-dev-qa-db-ja.com

オブジェクトは、CustomEventInitializationを使用したこのアクションIE9をサポートしていません

IE9で次のエラーが発生します。

「オブジェクトはこのアクションをサポートしていません」。

これについてはさまざまな質問がありますが、私のものは特に次のコード用です。

 var myEvent = new CustomEvent("additem");

私の理解では、CustomEventはDOM操作コマンドとしてIE9でサポートされています。これは、例外なくChromeで正常に機能します。

誰かがこの問題を抱えていて、それを解決する方法を知っていますか?ありがとう。

15
Idan Shechter

AfaikカスタムイベントはIEではサポートされておらず、通常のブラウザでのみサポートされています。 Jqueryのトリガーのようなブラウザーに依存しない実装を提供するjavascriptライブラリを使用することをお勧めします: http://api.jquery.com/trigger/

20
Flunk

Javascript関数を使用して、ブラウザーがIE11以下であるかどうかを検出し、次のポリフィルを適用できます。

    (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;
    })();

上記のポリフィルはMDNから取得されます: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent

18
Florin Dobre

ネイティブ(および機能)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;
})();
6
Scott Jungwirth

次のポリフィルは、ネイティブの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;
})();
1
Rex Hsu