对象不支持使用CustomEvent Initialization的此操作IE9

Ida*_*ter 15 javascript internet-explorer javascript-events custom-event

我在IE9中收到以下错误:

"对象不支持此操作".

关于这个有各种各样的问题,但我的具体是针对以下代码:

 var myEvent = new CustomEvent("additem");
Run Code Online (Sandbox Code Playgroud)

根据我的理解,IE9支持CustomEvent作为DOM操作命令.这在Chrome中运行正常,没有任何异常.

任何人都有这个问题,知道如何解决它?谢谢.

小智 20

IE中不支持Afaik自定义事件,仅在普通浏览器中.我建议使用一个javascript库来提供像Jquery的触发器这样的浏览器独立实现:http://api.jquery.com/trigger/

  • @HMR是对的,**支持自定义事件!**.你必须使用`document.createEvent()`和`CustomEvent :: initCustomEvent()`来实现**IE 9的兼容性**.请参阅我的回答:http://stackoverflow.com/a/19345563/603003 (10认同)
  • 仅仅针对"仅在普通浏览器中"投票. (9认同)

Flo*_*bre 18

您可以使用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;
    })();
Run Code Online (Sandbox Code Playgroud)

上面的polyfill来自MDN:https: //developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent

  • 新的CustomEvent在IE 10/11中也不起作用. (3认同)

Sco*_*rth 6

试试这个不替换原生(和功能)CustomEvent方法的polyfill.

(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;
})();
Run Code Online (Sandbox Code Playgroud)