2016-07-15 210 views
0

我有这个代码,其中一个事件首先由用户触发。 然后在事件处理程序中再次触发事件。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

但该物业一直在我的努力得到不确定的。

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

回答

0

你可以简单地设置一个标志,在第一次运行。

然后在处理程序的开始时检查标志的状态。如果该标志已被设置,则取消设置并返回(以便下一次运行将再次触发事件),但不运行其余部分。

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

1

删除

item.parentNode.focus();