点击JavaScript和jQuery中的源代码,人工还是自动?

我们都知道您可以使用以下方法之一模拟元素上的click或任何其他事件:

$('#targetElement').trigger('eventName'); $('#targetElement').click(); 

我遇到过一种情况,我应该知道如何点击一个元素。 我应该知道它是通过代码自动点击还是按下鼠标按钮。 无论如何我可以在没有黑客或变通办法的情况下做到这一点吗? 我的意思是,浏览器的事件对象,JavaScript或jQuery中是否有任何内容可以告诉我们是否已经通过人为操作或代码启动了点击?

试试这个:

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

然后,为了使这项工作,你必须像这样触发它们:

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

看到这个jsfiddle 。

查看event.which ,如果用代码触发它将是undefined

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

jsFiddle 。

这是我找到的一种方式(在Chrome中测试)

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

请参阅此处进行测试: http : //jsfiddle.net/ZPD8w/2/

在您的直接事件处理程序中,提供e参数。 如果点击是自动的(通过代码),这个e将是未定义的(不需要检查e.target,如@alex所说):

 $('#targetElement').click(function(e){ if(e) { // Click is triggered by a human action } else { // Click is triggered via code } });