2016-07-15 66 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(); 
相關問題