2017-08-29 105 views
4

我正在做一個小jQuery腳本,當我不在我的電腦時可以幫助我做一些事情。像機器人一樣。如何模擬長鼠標左鍵點擊

這個機器人必須執行一些左鍵點擊頁面上特定的X,Y點。我使用此代碼並且完美地工作: document.elementFromPoint(X,Y).click();

但我還需要長時間點擊頁面的另一個點。 我需要模擬這個: 按住左鍵(x,y)...等待3秒...釋放左鍵單擊。

有沒有辦法做到這一點?

謝謝。

回答

3

使用純JavaScript,這可能是不可能的。至少不適合所有情況。

不過,如果您所指定的元件是使mousedownmouseup檢測到這種「長鼠標點擊」,那麼你可能直接觸發他們:

document.elementFromPoint(X, Y).mousedown(); 

setTimeout(() => document.elementFromPoint(X, Y).mouseup(), 3000); 

就像我說的,是行不通的在任何情況下,因爲你實際上並不是在控制鼠標本身,而應該讓你在一些模擬中使用鼠標。

0

把超時聽衆mousedownmouseup

不是最好代碼之間,但你可以做這樣的事情:

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); 
}