我在网页中有一些元素,我想模拟点击。可以通过以下逻辑轻松点击同一页面中的其他元素:
$('.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,我不知道如何规避它?
有什么想法吗? (客户端毕竟是我的境界^^)
最佳答案
事件可能不是通过 jquery 绑定(bind)的,而是在元素上。我不确定那是怎么回事,但这对我不起作用:
$('.mycls:eq(0)').trigger('click');
但这确实:
document.querySelector('.mycls').click();
关于javascript - 无法触发对 jQuery 中元素的点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31856392/