Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.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,我使用这段代码来确定单击是否是以编程方式触发的 我应该如何编辑$('#x')。触发('click')以模拟真实的单击?(hasOwnProperty应返回true“Real”) $('#x')。单击(函数(e){ if(例如hasOwnProperty('originalEvent')){ $('out')。追加('li>Real); }否则{ $(“#out”).append(“不真实的””); } }); $('#y')。单击(函数(){ $('#x')。触发器('click');//如何编

我使用这段代码来确定单击是否是以编程方式触发的

我应该如何编辑
$('#x')。触发('click')
以模拟真实的单击?(hasOwnProperty应返回true“Real”)

$('#x')。单击(函数(e){
if(例如hasOwnProperty('originalEvent')){
$('out')。追加('li>Real);
}否则{
$(“#out”).append(“
  • 不真实的”
  • ”); } }); $('#y')。单击(函数(){ $('#x')。触发器('click');//如何编辑此 });
    所以本质上你想要的是不可能的。无法模拟具有所有提升权限的真正单击(如
    窗口。打开
    没有被弹出窗口阻止程序阻止)

    如果你坚持的话。。。通过以编程方式向元素发送单击事件,可以解决特定情况。但它在很多方面都很容易出错

    var event = new Event('click');
    
    $('#x')[0].dispatchEvent(event);
    

    您可以轻松地向click函数添加一个额外参数,而不是向事件对象添加属性:

    $('#x').click(function(e, orig) {
        if(orig) {
            $('#out').append('<li>Real</li>');
        } else {
            $('#out').append('<li>Unreal</li>');
        }
    });
    $('#y').click(function() {
        $('#x').trigger('click', true);
    });
    

    模拟真实的点击是一种矛盾修饰法。如果你模拟一次点击,根据定义,它不是真实的。最终是什么阻止你接受任何答案?或者只是
    $('#x')[0]。点击()您无法确定该功能的实现。。。我对只有jQuery接收器触发有问题……是的,但我比将无效的格式化对象传递给
    dispatchEvent()
    方法更确定,您应该在该方法中传递DOM事件,而不是jq事件。因此,事实上,这些方法都不安全
    $('#x').click(function(e, orig) {
        if(orig) {
            $('#out').append('<li>Real</li>');
        } else {
            $('#out').append('<li>Unreal</li>');
        }
    });
    $('#y').click(function() {
        $('#x').trigger('click', true);
    });
    
    $('#x').trigger($.Event( "click", { originalEvent: true } ));