Javascript 有没有办法确定JS事件是通过编程还是通过实际交互触发的?

Javascript 有没有办法确定JS事件是通过编程还是通过实际交互触发的?,javascript,events,Javascript,Events,假设我使用一个简单的document.getElementById('myTextArea').focus()以编程方式将焦点设置在textarea上。在textarea上,我有一个onFocus事件: document.getElementsByName('myTextArea')[0].onFocus = function () { alert('I’m focused!'); }; 我只希望在用户实际关注textarea时触发onFocus,而不是在我以编程方式设置焦点时 onF

假设我使用一个简单的
document.getElementById('myTextArea').focus()以编程方式将焦点设置在
textarea
。在
textarea
上,我有一个
onFocus
事件:

document.getElementsByName('myTextArea')[0].onFocus = function () {
    alert('I’m focused!');
};
我只希望在用户实际关注
textarea
时触发
onFocus
,而不是在我以编程方式设置焦点时


onFocus
中是否有一种方法可以在不传入我自己的参数的情况下判断事件是由代码触发的还是由人触发的?

是的,当由浏览器触发时,它会生成一个“originalEvent”

为什么在您不想这样做的情况下,有必要以编程方式设置焦点?@Ankit-为了说明我的需要,这是一个过于简化的示例。请尝试检查悬停和焦点事件是否为真?我相信答案是否定的。在你的例子中,我唯一能想到的就是覆盖
prototype
,让
focus
函数在事件处理程序中检查的DOM元素上设置某种标志。然后你就知道调用了
focus()
。可能是jQuery的重复,而不是JavaScript……这是真的@BrandonDurham。这是我找到的唯一解决办法。