我正在做一个小jquery脚本,当我不在我的电脑上时帮助我做一些事情。像机器人一样。
此机器人必须执行一些左键单击页面的特定X,Y点。
我使用此代码并完美运行: document.elementFromPoint(X,Y).click();
但我还需要长时间点击页面的另一个点。 我需要模拟这个: 按左键单击(x,y)...等待3秒......释放左键单击。
有没有办法做类似的事情?
谢谢。
答案 0 :(得分:3)
使用纯JavaScript,这可能是不可能的。至少不适用于所有情况。
但是,如果您定位的元素使用mousedown
和mouseup
来检测此“长按鼠标”,那么您可以直接触发它们:
document.elementFromPoint(X, Y).mousedown();
setTimeout(() => document.elementFromPoint(X, Y).mouseup(), 3000);
就像我说的那样,在所有情况下都不会起作用,因为你实际上并没有控制鼠标本身,而是应该让你在某些模拟它。
答案 1 :(得分:0)
在mousedown
和mouseup
不是最佳代码,但您可以执行以下操作:
function listenForLongClick (domElement, timeout = 3000) {
let mouseDownStarted = false;
let timeoutCheck = null;
domElement.addEventListener('mousedown', () => {
mouseDownStarted = true;
timeoutCheck = setTimeout(() => mouseDownStarted = false, timeout);
}, false);
domElement.addEventListener('mouseup', () => {
clearTimeout(timeoutCheck);
if (mouseDownStarted) { console.log('within the 3 seconds'); }
mouseDownStarted = false;
}, false);
}