我在 IE9 中收到以下错误:
“对象不支持此操作”。
关于这个有各种各样的问题,但我的问题是专门针对以下代码的:
var myEvent = new CustomEvent("additem");
据我了解,CustomEvent
IE9 支持作为 DOM 操作命令。这在 Chrome 中运行良好,没有任何例外。
任何人都有这个问题并且知道如何解决它?谢谢。
我在 IE9 中收到以下错误:
“对象不支持此操作”。
关于这个有各种各样的问题,但我的问题是专门针对以下代码的:
var myEvent = new CustomEvent("additem");
据我了解,CustomEvent
IE9 支持作为 DOM 操作命令。这在 Chrome 中运行良好,没有任何例外。
任何人都有这个问题并且知道如何解决它?谢谢。
IE 不支持 Afaik 自定义事件,仅在普通浏览器中支持。我建议使用提供像 Jquery 触发器这样的浏览器独立实现的 javascript 库:http: //api.jquery.com/trigger/
您可以使用 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
试试这个不替换原生(和功能)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;
})();
以下 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;
})();