JavaScript:有没有办法检测用户是否触发了事件(而不是代码触发)?

时间:2016-07-15 09:33:12

标签: javascript

我有这个代码,其中一个事件首先由用户触发。 然后在事件处理程序中再次触发事件。

inputs.forEach(function(item) {

  item.addEventListener('focus', function() {  
    item.parentNode.focus(); 

    setTimeout(function() {
      item.parentNode.blur();
      item.focus();
    }, 1000);
  });  
});

目前,这会导致无限递归。

当我找到一种方法来检测用户是否触发了事件时,我可以检查一下。所以避免递归。

旧的StackOverflow答案谈论事件对象的“originalEvent”属性:Detect if a scroll event is triggered manually in jQuery

但在我的尝试中,这个属性一直未定义。

因此: 有没有办法检查事件是否是由用户触发的?

2 个答案:

答案 0 :(得分:1)

删除

  item.parentNode.focus(); 

答案 1 :(得分:0)

您可以在第一次运行时设置标志。

然后在处理程序的开头检查标志的状态。如果设置了标志,则只需取消设置并返回(因此下一次运行将再次触发事件),但不运行剩余部分。

如果尚未设置标志,请正常运行剩余部分,再次将标志设置为和。

相关问题