2016-07-15 7 views
0

Ich habe diesen Code, in dem ein Ereignis zuerst vom Benutzer ausgelöst wird. Dann wird das Ereignis innerhalb des Event-Handlers erneut ausgelöst.JavaScript: Gibt es eine Möglichkeit zu erkennen, ob ein Ereignis vom Benutzer ausgelöst wurde (anstelle von Code ausgelöst)?

inputs.forEach(function(item) { 

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

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

Derzeit führt dies zu einer unendlichen Rekursion.

Wenn ich einen Weg finden konnte zu erkennen, ob das Ereignis vom Benutzer ausgelöst wurde, dann könnte ich das überprüfen. Und so vermeiden Sie die Rekursion.

Ältere Antworten sprechen Stackoverflow über eine „originalEvent“ -property des ereignis Objekt: Detect if a scroll event is triggered manually in jQuery

Aber diese Eigenschaft immer in meinem Versuch nicht definiert worden.

Daher: Gibt es eine Möglichkeit, wie ich überprüfen kann, ob das Ereignis vom Benutzer ausgelöst wurde?

Antwort

0

Sie einfach eine Flagge auf dem ersten Lauf einstellen.

Dann am Anfang Ihrer Handler überprüfen Sie den Status der Flagge. Wenn das Flag bereits gesetzt ist, lösche es einfach und zurück (so wird der nächste Lauf das Ereignis erneut auslösen), aber nicht den verbleibenden Teil ausführen.

Wenn das Flag noch nicht gesetzt ist, führen Sie den verbleibenden Teil normal aus, setzen Sie das Flag auf und erneut.

1

entfernen

item.parentNode.focus(); 
Verwandte Themen