I am getting the following error in IE9:
"Object doesn't support this action".
There are various question about this, but mine is specifically for the following code:
var myEvent = new CustomEvent("additem");
From my understanding, CustomEvent is supported in IE9 as a DOM manipulation command. This works fine in Chrome without any exception.
Anyone has this problem and know how to solve it? Thanks.
Afaik custom events are not supported in IE, only in normal browsers. I suggest using a javascript library that provides a browser independent implementation like Jquery's trigger: http://api.jquery.com/trigger/
You can use a javascript function to detect if the browser is IE11 or lower then apply the next 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;
})();
The polyfill from above is taken from MDN:
https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent
Try this polyfill which doesn't replace a native (and functional) CustomEvent method.
(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;
})();
The following polyfill would not replacce native CustomEvent(),
Partial source from: 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;
})();