[英]Cross Browser compatible 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中收到錯誤:
對象不支持此操作
CustomEvent在IE中不起作用。
如何使這種跨瀏覽器兼容? 我不想使用jQuery trigger()
因為Listener
可能不在具有jQuery的頁面中
IE11不支持CoustomEvent構造函數。 你可以使用以下pollyfill
(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;
})();
從MDN復制
看看“我可以使用”頁面以及它對自定義事件的描述。
http://caniuse.com/#feat=customevent
具體來說,請閱讀此引文:
當window.CustomEvent對象存在時,它不能被稱為構造函數。 而不是新的CustomEvent(...),您必須使用e = document.createEvent('CustomEvent'),然后使用e.initCustomEvent(...)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.