복붙노트

[JQUERY] 이벤트가 인간에 의해 촉발되어 있는지 확인

JQUERY

이벤트가 인간에 의해 촉발되어 있는지 확인

해결법


  1. 1.당신은 e.originalEvent을 확인할 수 있습니다 :이 정의되어있는 경우 클릭이 인간 :

    당신은 e.originalEvent을 확인할 수 있습니다 :이 정의되어있는 경우 클릭이 인간 :

    바이올린 http://jsfiddle.net/Uf8Wv/ 봐

    $('.checkbox').change(function(e){
      if (e.originalEvent !== undefined)
      {
        alert ('human');
      }
    });
    

    바이올린 내 예 :

    <input type='checkbox' id='try' >try
    <button id='click'>Click</button>
    
    $("#try").click(function(event) {
        if (event.originalEvent === undefined) {
            alert('not human')
        } else {
            alert(' human');
        }
    
    
    });
    
    $('#click').click(function(event) {
        $("#try").click();
    });
    

  2. 2.더 정직 할 것 위의 것보다 :

    더 정직 할 것 위의 것보다 :

    $('.checkbox').change(function(e){
      if (e.isTrigger)
      {
        alert ('not a human');
      }
    });
    
    $('.checkbox').trigger('change'); //doesn't alert
    

  3. 3.나는이 작업을 수행 할 수있는 유일한 방법은 문서에 따라 트리거 호출에 추가 매개 변수를 전달하는 것이라고 생각합니다.

    나는이 작업을 수행 할 수있는 유일한 방법은 문서에 따라 트리거 호출에 추가 매개 변수를 전달하는 것이라고 생각합니다.

    $('.checkbox').change(function(e, isTriggered){
      if (!isTriggered)
      {
        alert ('human');
      }
    });
    
    $('.checkbox').trigger('change', [true]); //doesn't alert
    

    예 : http://jsfiddle.net/wG2KY/


  4. 4.허용 대답은 나를 위해 작동하지 않았다. 그것은 6 년이되었습니다 그리고 jQuery를 그 이후 많이 바뀌 었습니다.

    허용 대답은 나를 위해 작동하지 않았다. 그것은 6 년이되었습니다 그리고 jQuery를 그 이후 많이 바뀌 었습니다.

    예를 들어 event.originalEvent이의 jQuery 1.9.x. 항상 true를 반환 나는 평균 객체는 항상 존재하지만 내용이 다르다.

    jQuery를 최신 버전을 사용하는 사람들은이 일을 시도 할 수 있습니다. 크롬, 에지, IE, 오페라, FF에 작품

    if ((event.originalEvent.isTrusted === true && event.originalEvent.isPrimary === undefined) || event.originalEvent.isPrimary === true) {
        //Hey hooman it is you
    }
    

  5. 5.현재 대부분의 브라우저는 event.isTrusted 지원 :

    현재 대부분의 브라우저는 event.isTrusted 지원 :

    if (e.isTrusted) {
      /* The event is trusted: event was generated by a user action */
    } else {
      /* The event is not trusted */
    }
    

    문서에서 :


  6. 6.모든 코드의 제어를 못했을 경우에 대비, 어떤 외계인 setFocus void 현재보다 $ (입력) .focus ()를 호출하지 않습니다 ().

    모든 코드의 제어를 못했을 경우에 대비, 어떤 외계인 setFocus void 현재보다 $ (입력) .focus ()를 호출하지 않습니다 ().

    글로벌 변수를 사용하는 것은 나를 위해 올바른 방법입니다.

    var globalIsHuman = true;
    
    $('input').on('focus', function (){
        if(globalIsHuman){
            console.log('hello human, come and give me a hug');
        }else{
            console.log('alien, get away, i hate you..');
        }
        globalIsHuman = true;
    });
    
    // alien set focus
    function setFocus(){
        globalIsHuman = false;
        $('input').focus();
    }
    // human use mouse, finger, foot... whatever to touch the input
    

    일부 외국인은 또 다른 행성에서 $를 (입력) .focus ()를 호출합니다. 행운을 빕니다 또는 다른 답변을 확인


  7. 7.당신은 트리거 () 호출 대 마우스 클릭을 감지하면 onMouseDown 사용할 수 있습니다.

    당신은 트리거 () 호출 대 마우스 클릭을 감지하면 onMouseDown 사용할 수 있습니다.


  8. 8.난 당신처럼 마우스 위치를 확인 가능성에 대해 생각하는 것입니다 :

    난 당신처럼 마우스 위치를 확인 가능성에 대해 생각하는 것입니다 :

  9. from https://stackoverflow.com/questions/6692031/check-if-event-is-triggered-by-a-human by cc-by-sa and MIT license