我有这个代码,其中一个事件首先由用户触发。 然后在事件处理程序中再次触发事件。
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();
答案 1 :(得分:0)
您可以在第一次运行时设置标志。
然后在处理程序的开头检查标志的状态。如果设置了标志,则只需取消设置并返回(因此下一次运行将再次触发事件),但不运行剩余部分。
如果尚未设置标志,请正常运行剩余部分,再次将标志设置为和。