检查对象是否是JS中的事件

时间:2013-01-13 04:42:07

标签: javascript javascript-events

我有一个可以显式调用的函数,也可以在事件触发时调用。如果它是由事件触发的,我需要忽略一个可能具有有用值的函数参数。

是否有可靠的跨浏览器方式我可以检查对象是否是一个事件?

我们一直在使用它,但意识到它在IE7中不起作用,因为Event未定义:

var view = {
    save: function (data) {
        if (data.constructor === Event.constructor) {
            // It's an event.
        }
    }
};

1 个答案:

答案 0 :(得分:2)

我认为“穷人”的方式是检查所有Event个对象是否存在某种方法 - 无论它们是如何创建的:

if (!(typeof data.altKey == "undefined")) {
  // it's an Event
}

修改

由于在某些版本的IE中我不接受preventDefault,我已经改变了使用不同属性的解决方案,实际上任何公共属性都应该可以正常工作。