使用JavaScript模拟在x/y坐标处的点击

6

如何使用javascript或jquery模拟点击x/y坐标?

我需要多次使用该脚本,希望脚本依次在位置一、位置二、位置三、位置四等处进行点击。

最好不要移动鼠标指针,但如果必须移动,则也可以。


4
尝试{编写一些代码},捕获{无法完成时}抛出{发脾气}。 - Niet the Dark Absol
1
我想了解更多关于你想要实现的目标...不好意思,但我有点怀疑你是否试图通过某种点击收入欺骗方式获取利益。 - Prestaul
可能是通过使用x,y坐标模拟点击? - Javascript的重复问题。 - Prestaul
@AhmedHafez,我已经编辑了你的帖子……我这么做的目的是希望能够帮助你获得更好的答案,但如果你觉得它不再问你需要的内容,请提供更多细节。我们都在努力为你提供最好的答案。 - Prestaul
显示剩余6条评论
2个回答

20

使用document.elementFromPoint方法可以实现这一点。以下是一个 jQuery 的示例:

function simulateClick(x, y) {
    jQuery(document.elementFromPoint(x, y)).click();
}
simulateClick(100, 250);
simulateClick(400, 250);

编辑:这里有一个可工作的例子:http://jsfiddle.net/z5YjY/


1
@AhmedHafez,将我写的内容放在<script>标签中,包含jquery,它应该可以工作。我不相信有一种模拟右键单击的方法,而模拟iframe内部的单击技术将会非常不同。如果您需要能够做到这一点,那么iframe必须在与父窗口相同的域上,并且我建议创建第二个问题。(即“如何模拟iframe内部的单击”) - Prestaul
1
@AhmedHafez,我添加了一个工作示例,模拟了5次点击并报告了该位置元素中的文本。看看这是否有帮助。 - Prestaul
1
是的,这个在 iframe 中不起作用,如果你有关于 iframes、时间等方面的其他问题,我建议你将它们作为新问题发布,但要注意你的英语表达,否则你可能会在得到好答案之前被 downvote。最好让同事或朋友帮你审查问题。 - Prestaul
无法使用<canvas>。我在此页面尝试了您的代码:http://codepen.io/r0ysy0301/full/grjaOp/。 - Ave
@VănLộc,我在那段代码中没有看到任何点击模拟。你在画布方面遇到了什么问题? - Prestaul
显示剩余7条评论

5

在第二次尝试中,我将分享我的经验并更新Prestaul的答案。

在大多数情况下,您不仅希望点击元素以触发“onclick”事件,而且还希望将单击信息用于某些操作(例如:移动滑块到那里,或在该确切位置放置弹出窗口)。

我主要使用原生JavaScript,但它也可以很好地与 $ 混合使用。

function simulateClick(x, y) {
    var clickEvent= document.createEvent('MouseEvents');
    clickEvent.initMouseEvent(
    'click', true, true, window, 0,
    0, 0, x, y, false, false,
    false, false, 0, null
    );
    document.elementFromPoint(x, y).dispatchEvent(clickEvent);
}

基本上,这将通过事件传递正确的pageX / pageY,以供进一步使用。
我已经更新了fiddle,以展示这些坐标的用法: http://jsfiddle.net/V4CdC/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接