我需要创建一个自定义事件,它将一些数据传递给事件监听器。我已经像下面创建了一个
CustomEvent
var event = new CustomEvent('store', { 'detail': obj });
document.getElementById("Widget").dispatchEvent(event);
侦听器document.getElementById("Widget").addEventListener('store', function (e) {
console.log(e.detail);
document.getElementById("result").innerHTML = e.detail.name+"<br>"+e.detail.address;
}, false);
在Chrome和Firefox等浏览器中运行正常,但在IE11中则无法运行。我在IE中遇到错误:如何使该跨浏览器兼容?我不想使用jQuery
trigger()
,因为Listener
可能不在具有jQuery的页面中 最佳答案
IE11不支持CoustomEvent构造函数。
您可以使用以下polyfill
(function () {
if ( typeof window.CustomEvent === "function" ) return false;
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;
})();
从ojota复制