我想测试是否支持CustomEvent
constructor。
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浏览器呢?
答案 0 :(得分:15)
以下应该可以工作,即使在IE6上,我也在IE6旧机器上进行了测试。
if (typeof CustomEvent === 'function') {
ev = new CustomEvent('splat');
}
答案 1 :(得分:3)
是的,try / catch应该有效,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;
}
})();
答案 2 :(得分:1)
MDN文档声明它是IE9及更高版本。
这样的检查可能已经足够了:
if (window["CustomEvent"] === undefined) {
// Do stuff to add custom event class
}
抱歉jsfiddle不支持IE8。