Javascript 检查对象是否是JS中的事件
我有一个函数,可以显式调用,也可以在事件触发时调用。如果它是由事件触发的,我需要忽略一个函数参数,否则它可能有一个有用的值 是否有可靠的跨浏览器方式可以检查对象是否为事件 我们一直在使用它,但意识到它在IE7中不起作用,因为Javascript 检查对象是否是JS中的事件,javascript,javascript-events,Javascript,Javascript Events,我有一个函数,可以显式调用,也可以在事件触发时调用。如果它是由事件触发的,我需要忽略一个函数参数,否则它可能有一个有用的值 是否有可靠的跨浏览器方式可以检查对象是否为事件 我们一直在使用它,但意识到它在IE7中不起作用,因为Event未定义: var view = { save: function (data) { if (data.constructor === Event.constructor) { // It's an event.
Event
未定义:
var view = {
save: function (data) {
if (data.constructor === Event.constructor) {
// It's an event.
}
}
};
我认为“穷人”的方法是检查所有Event
对象是否存在某种方法,而不管它们是如何创建的:
if (!(typeof data.altKey == "undefined")) {
// it's an Event
}
编辑
由于某些版本的IE不接受preventDefault,因此我已将解决方案更改为使用不同的属性,实际上任何公共属性都可以正常工作
preventDefault
在早期版本的IE中未定义,如果您支持这些版本的IE,则您支持的是不受支持的软件。IE6+支持preventDefault
(微软甚至不再支持它)。抱歉,但是-1有点苛刻。IE9是支持preventDefault
的最早版本。很公平,我不好,但是相同的想法适用于不同的属性。将更新。只要OP在非事件中没有定义相同的属性,它就应该可以。