3

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

是否有一种可靠的跨浏览器方法可以检查对象是否为事件?

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

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

1 回答 1

2

我想“穷人”的方法是只检查所有Event对象都具有的某种方法的存在——不管它们是如何创建的:

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

编辑

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

于 2013-01-13T04:48:31.913 回答