检测正在工作的CustomEvent构造函数

Dag*_*bit 6 javascript

我想测试CustomEvent构造函数是否受支持.

var ev;

if (/* CustomEvent constructor supported? */) {
    ev = new CustomEvent('splat');
} else {
    ev = document.createEvent('Event');
    ev.initEvent('splat');
}

this.dispatchEvent(ev);
Run Code Online (Sandbox Code Playgroud)

我没有任何运行IE的机器来测试它.它是否会抛出错误,因此我可以使用try/catch,还是需要执行其他操作?那些旧的非IE浏览器怎么样?

Jel*_*alt 15

以下应该可以工作,即使在IE6上,我已经在使用IE6的旧XP机器上进行了测试.

if (typeof CustomEvent === 'function') {
    ev = new CustomEvent('splat');
}
Run Code Online (Sandbox Code Playgroud)


Cap*_*ohn 0

MDN 文档指出它是 IE9 及以上版本。

像这样的检查可能就足够了:

if (window["CustomEvent"] === undefined) {
    // Do stuff to add custom event class
}
Run Code Online (Sandbox Code Playgroud)

抱歉,jsfiddle 不支持 IE8。

  • 在 IE11 中,存在“window.CustomEvent”,但不能用作构造函数。 (5认同)