簡體   English   中英

檢測正在工作的CustomEvent構造函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM