[英]Detect working CustomEvent constructor
我想測試是否支持CustomEvent
構造函數 。
var ev;
if (/* CustomEvent constructor supported? */) {
ev = new CustomEvent('splat');
} else {
ev = document.createEvent('Event');
ev.initEvent('splat');
}
this.dispatchEvent(ev);
我沒有任何運行IE的機器來測試它。 它是否會拋出錯誤,因此我可以使用try / catch,還是需要執行其他操作? 那些舊的非IE瀏覽器怎么樣?
以下應該可以工作,即使在IE6上,我已經在使用IE6的舊XP機器上進行了測試。
if (typeof CustomEvent === 'function') {
ev = new CustomEvent('splat');
}
是的,嘗試/捕獲應該工作,ie8將拋出:
TypeError: 'CustomEvent' is undefined
ie11將拋出:
Object doesn't support this action
其他較舊的瀏覽器要么根本沒有實現它,要么不作為構造函數,因此應該導致類似的錯誤
所以你可以這樣做:
var isSupported = (function() {
try {
new CustomEvent('test');
return true;
} catch (e) {
return false;
}
})();
MDN文檔聲明它是IE9及更高版本。
像這樣的支票可能足夠好:
if (window["CustomEvent"] === undefined) {
// Do stuff to add custom event class
}
抱歉jsfiddle不支持IE8。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.