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/
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方法的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)