我在IE9中遇到以下错误:
"对象不支持此操作"。
关于此问题有很多疑问,但我的问题特别针对以下代码:
var myEvent = new CustomEvent("additem");
据我所知,CustomEvent
在 IE9 中作为 DOM 操作命令得到了支持。在 Chrome 中可以正常工作,没有任何异常。
是否有人遇到过此问题并知道如何解决?谢谢。
我在IE9中遇到以下错误:
"对象不支持此操作"。
关于此问题有很多疑问,但我的问题特别针对以下代码:
var myEvent = new CustomEvent("additem");
据我所知,CustomEvent
在 IE9 中作为 DOM 操作命令得到了支持。在 Chrome 中可以正常工作,没有任何异常。
是否有人遇到过此问题并知道如何解决?谢谢。
据我所知,IE浏览器不支持自定义事件,只有普通浏览器支持。建议使用提供跨浏览器实现的JavaScript库,例如jQuery的trigger: http://api.jquery.com/trigger/
(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
(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;
})();
catch
块内? - Scott Jungwirth(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;
})();
document.createEvent()
和CustomEvent::initCustomEvent()
以确保在IE 9中兼容性。在这里查看我的答案:https://dev59.com/G2Ik5IYBdhLWcg3wWtFz#19345563 - ComFreek