有没有办法检测事件是使用输入设备还是通过脚本触发,如.onEvent()?

时间:2010-12-28 21:18:33

标签: javascript jquery javascript-events

有没有办法检测事件是使用输入设备还是通过脚本触发,如.onEvent()

2 个答案:

答案 0 :(得分:4)

短篇小说,没有。

您唯一可以检查的是event object,它被传递给回调处理程序(“事件处理程序”)。就像他的答案中提出的 typeof 一样,如果事件是由设备触发的话,可能会有未设置的属性(反之亦然),但是再次它是100%不可靠的。例如:

$('someinputcontrol').trigger({
    type:          'keydown',
    originalEvent: true
});

您可以使用此技术向事件对象添加任何属性。因此,没有可靠的方法来检测是否由于设备或脚本而触发了事件。

答案 1 :(得分:2)

看起来你可以检查传递给事件处理程序的事件对象,看看它是否是一个人为事件:

if(event.originalEvent) {
    ...
}

如果事件是由输入设备而不是脚本触发的,事件对象似乎会有一个名为 originalEvent 的属性。