Click source in JavaScript and jQuery, human or automated?

后端 未结 4 2146
無奈伤痛
無奈伤痛 2020-12-11 18:40

We all know that you can simulate click or any other event on an element using one of these ways:

$(\'#targetElement\').trigger(\'eventName\');
$(\'#targetEl         


        
相关标签:
4条回答
  • 2020-12-11 19:24

    In your immediate event handler, provide an e parameter. If the click is automated (via code), this e would be undefined (no need to check e.target as @alex has said):

    $('#targetElement').click(function(e){
       if(e)
       {
          // Click is triggered by a human action
       }
       else
       {
         // Click is triggered via code
       }
    });
    
    0 讨论(0)
  • 2020-12-11 19:33

    Try this:

    $('#targetElement').click(function(event, generated) {
        if (generated) {
            // Event was generated by code, not a user click.
        } else {
            // Event was generated by a user click.
        }
    });
    

    Then, to make this work, you have to trigger them like this:

    $('#targetElement').trigger('click', [true]);
    

    See this jsfiddle.

    0 讨论(0)
  • 2020-12-11 19:37

    Check out event.which, it'll be undefined if triggered with code.

    $(document).click(function(event) {
        if (event.which) {
           // Triggered by the event.
        } else {
           // Triggered with code.
        }
    });
    

    jsFiddle.

    0 讨论(0)
  • 2020-12-11 19:40

    Here's one way I have found (tested in Chrome)

    $('#foo').click(function(e) {
        if (e.originalEvent)
            alert('Has e (manual click)');
        else
            alert('No e (triggered)');
    });
    

    See here for testing: http://jsfiddle.net/ZPD8w/2/

    0 讨论(0)
提交回复
热议问题