Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查单击事件是否由鼠标实际单击触发?_Javascript_Jquery - Fatal编程技术网

Javascript 检查单击事件是否由鼠标实际单击触发?

Javascript 检查单击事件是否由鼠标实际单击触发?,javascript,jquery,Javascript,Jquery,我有一个按钮,我决定触发这个按钮: $(button_name).trigger("click"); 函数的处理程序要求在使用鼠标触发时,左键触发单击,但也需要通过使用代码触发来接受单击,如上图所示。如何创建一个条件语句来计算这些条件是否为真 if((navigator.appName === "Microsoft Internet Explorer" && window.event.button === 1) || window.event.button == 0

我有一个按钮,我决定触发这个按钮:

$(button_name).trigger("click");
函数的处理程序要求在使用鼠标触发时,左键触发单击,但也需要通过使用代码触发来接受单击,如上图所示。如何创建一个条件语句来计算这些条件是否为真

if((navigator.appName === "Microsoft Internet Explorer" && window.event.button === 1) 
    || window.event.button == 0
    || ...){

    /* If true, do this */
}

单击处理程序的第一个参数是事件对象。如果它是一个物理鼠标点击,它将有一个
clientX
clientY
属性-如果它是编程的,它不会

$('#button').click(function (e) {
    if (e.clientX) {
        // physical click
    } else {
        // program click
    } 
});

如果你想获得完全的跨浏览器支持,并且是未来的证明,我认为你做不到,js在添加和修改属性方面是非常兼容的,但我的问题是“你应该这样做吗?”有几次,模拟鼠标点击的能力实际上节省了大量的时间和精力

如果
clientX
为零会发生什么?我同意这不重要,但是检查jQuery事件的属性应该是非常可靠的。如果jQuery没有包装并规范化所有事件,那么除非有一个近似的解决方案足够好,否则您可能会运气不佳。@mu问题是,除非您真的愿意投入数小时的工作来尝试解决这类问题,否则它真的会有效吗?我认为在这个案件中付出的努力是不值得的。我们没有足够的细节来知道所有这些诡计在这个案件中是否值得。但是您不需要担心跨浏览器问题,因为jQuery包装了事件,所以您只需要关心jQuery正在做什么。无论如何,担心它可能是毫无意义的。我认为你能找到的任何区分两者的方法,都可以被修补(模仿)。