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 } ));