我正在做一個小jQuery腳本,當我不在我的電腦時可以幫助我做一些事情。像機器人一樣。如何模擬長鼠標左鍵點擊
這個機器人必須執行一些左鍵點擊頁面上特定的X,Y點。我使用此代碼並且完美地工作: document.elementFromPoint(X,Y).click();
但我還需要長時間點擊頁面的另一個點。 我需要模擬這個: 按住左鍵(x,y)...等待3秒...釋放左鍵單擊。
有沒有辦法做到這一點?
謝謝。
我正在做一個小jQuery腳本,當我不在我的電腦時可以幫助我做一些事情。像機器人一樣。如何模擬長鼠標左鍵點擊
這個機器人必須執行一些左鍵點擊頁面上特定的X,Y點。我使用此代碼並且完美地工作: document.elementFromPoint(X,Y).click();
但我還需要長時間點擊頁面的另一個點。 我需要模擬這個: 按住左鍵(x,y)...等待3秒...釋放左鍵單擊。
有沒有辦法做到這一點?
謝謝。
使用純JavaScript,這可能是不可能的。至少不適合所有情況。
不過,如果您所指定的元件是使mousedown
和mouseup
檢測到這種「長鼠標點擊」,那麼你可能直接觸發他們:
document.elementFromPoint(X, Y).mousedown();
setTimeout(() => document.elementFromPoint(X, Y).mouseup(), 3000);
就像我說的,是行不通的在任何情況下,因爲你實際上並不是在控制鼠標本身,而應該讓你在一些模擬中使用鼠標。
把超時聽衆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);
}