我在网页中有一些要模拟点击的元素。可以通过以下逻辑轻松单击同一页面中的其他元素:
$('.someClass').trigger('click');
但是如果我尝试使用特定元素,它就不起作用了。 我尝试向无法单击的元素添加一个单击处理程序,以查看是否可以反向= 捕获一个单击而不是触发一个:
$('.someClass').on('click', function (event) {
console.log('element was clicked');
});
有效。这意味着:选择器是正确的,元素存在于DOM中。但为什么我的点击没有效果?
我尝试了以下所有内容但没有成功:
点击元素所在的位置:
function simulateClick(x, y) {
$(document.elementFromPoint(x, y)).click();
}
var element = $('.someClass')[0];
var bodyRect = document.body.getBoundingClientRect(),
elemRect = element.getBoundingClientRect(),
voffset = elemRect.top - bodyRect.top;
hoffset = elemRect.left - bodyRect.left;
console.log('Element is ' + voffset + ' vertical pixels from <body>');
console.log('Element is ' + hoffset + ' horizontal pixels from <body>');
simulateClick(hoffset, voffset);
首先解除所有事件的绑定:
$('.someClass').unbind();
$('.someClass').trigger('click');
使用vanilla JS点击:
$('.someClass')[0].click();
对我来说很明显,页面以某种方式阻止并阻止对此元素的所有点击,但我怎样才能找到对此负责的机制?该网站使用混淆的JS,我不知道如何规避它?
有什么想法吗? (毕竟^^客户端在我的领域)
答案 0 :(得分:0)
事件可能不是通过jquery绑定的,而是绑定在元素上。我不确定那是怎么回事,但这对我没用:
$('.mycls:eq(0)').trigger('click');
但是这样做了:
document.querySelector('.mycls').click();
答案 1 :(得分:-1)
为要模拟单击的元素添加单击处理程序。
$('.myelementsclass').bind('click', function() {
alert($(this))
});
然后使用您的逻辑触发点击:
$('.myelementsclass').trigger('click');