javascript 为click()指定坐标,输入类型=image [duplicate]

kmpatx3s  于 2022-10-30  发布在  Java
关注(0)|答案(1)|浏览(133)

此问题在此处已有答案

How to simulate a click by using x,y coordinates in JavaScript?(5个答案)
55分钟前就关门了。
https://mdn.github.io/learning-area/html/forms/image-type-example/xy-coordinates-example.html
请注意,当按一下页面上的彩色方块时,URL会显示按一下的坐标。
当使用document.querySelector("input").click()时,URL显示x=0&y=0的坐标。
我想以编程方式单击(使用控制台或用户脚本/*monkey),使URL显示我指定的坐标。
我尝试过的方法:

document.querySelector("input").dispatchEvent(new MouseEvent('click', {
 'x': 55, //and offsetX and clientX
 'y': 55 
}))

https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/MouseEvent注意到这些并不实际移动光标,这很好。
我试着在它上面放一个div,把点击传递过去。

const newdiv = document.createElement("div");
newdiv.style.position = "fixed";
newdiv.style.height = "1px";
newdiv.style.width = "1px";
newdiv.style.top = "55px";
newdiv.style.left = "55px";
newdiv.style.pointerEvents = "none";

document.querySelector("div").prepend(newdiv);
newdiv.click();

它适用于手动点击,但.click()不执行任何操作(因为它是同级?)document.querySelector("input").prepend(newdiv);将冒泡,但它仍然是0,0
如何单击坐标?

fzsnzjdm

fzsnzjdm1#

要做到这一点,你可以使用一个MouseEvent,并设置它的x和y坐标。我还添加了一个函数来检测鼠标移动,以显示它的工作。

// detect the mouse movement
document.addEventListener('click', function (event){
console.log(event.clientX, event.clientY)
})
// 
function click(x, y, element){
var click = new MouseEvent("click", {
    "view": window,
    "bubbles": true,
    "cancelable": false,
    "clientX":x,
    "clientY":y
});
element.dispatchEvent(click);
}
click(10, 20, document)

相关问题