2016-07-15 2 views
0

나는 이벤트가 사용자에 의해 처음으로 트리거되는이 코드를 가지고 있습니다. 그런 다음 이벤트는 이벤트 처리기 내에서 다시 트리거됩니다.JavaScript : 코드 트리거가 아닌 사용자가 이벤트를 트리거했는지 감지하는 방법이 있습니까?

inputs.forEach(function(item) { 

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

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

현재 무한 재귀가 발생합니다.

사용자가 이벤트를 트리거했는지 감지 할 수있는 방법을 찾았을 때이를 확인할 수있었습니다. 그리고 재귀를 피하십시오.

이전 StackOverflow의 답변은 이벤트 객체의 "originalEvent"-property에 대해 이야기 : Detect if a scroll event is triggered manually in jQuery

그러나이 속성은 항상 내 노력에 정의되지 않은되었다.

따라서 : 이벤트가 사용자에 의해 트리거되었는지 확인할 수있는 방법이 있습니까?

답변

0

제거.

그런 다음 처리기 시작 부분에서 플래그 상태를 확인하십시오. 깃발이 이미 설정되어 있으면 설정을 해제하고 돌아갑니다 (다음 실행으로 인해 이벤트가 다시 트리거됩니다). 나머지 부분은 실행하지 않습니다.

플래그가 아직 설정되지 않은 경우 남은 부분을 정상적으로 실행하고 및 플래그를 다시 설정하십시오.

1

당신은 단순히 첫 번째 실행에 플래그를 설정할 수 있습니다

item.parentNode.focus(); 
관련 문제