2016-08-08 11 views
0

Also mein Problem ist folgendes,greifen sowohl der rechte und der linke Klicks eines Benutzers gleichzeitig

ich mich gefragt, ob es eine Möglichkeit, wenn ein Benutzer direkt Klicks zu erkennen war und klickt gleichzeitig nach links und eine Aktion zu begehen, wenn tun also in jQuery. Es scheint, als ob der Code bei Mausereignissen nur einen Rechtsklick oder einen Linksklick gleichzeitig erkennen kann.

UPDATE

Danke für die Antworten, entschied ich mich schließlich diese Funktion zu, funky wäre für die Benutzer zu haben, wenn ich sie umzusetzen versuchte. Hoffentlich können diese Antworten auch anderen Menschen helfen.

Antwort

2

Sie Variablen erstellen können, den Zustand jeder Maustaste einzeln und ob beide Tasten gedrückt sind, um zu bestimmen verwenden zu halten:

ist
window.isLeftMouseDown = false; 
window.isRightMouseDown = false; 

$(document).on('mousedown', function(e) { 
    if (e.which == 1) 
    window.isLeftMouseDown = true; 
    else if (e.which == 3) 
    window.isRightMouseDown = true; 

    if (window.isLeftMouseDown && window.isRightMouseDown) { 
    console.log('both down'); 
    } 
}); 

$(document).on('mouseup', function(e) { 
    if (e.which == 1) 
    window.isLeftMouseDown = false; 
    else if (e.which == 3) 
    window.isRightMouseDown = false; 
}); 

https://jsfiddle.net/2j151tpt/

+0

Sind Sie sicher, dass mouseup/mousedown den rechten Mausklick erkennen kann? – gaetanoM

+1

Es funktioniert in meiner Geige. –

+0

Vielen Dank für das Teilen. – gaetanoM

1

So etwas wie das. Es verwendet ES2015.

let left = false; 

document.addEventListener('mousedown', e => { 
    if (e.button === 0) { 
     left = true; 
    } else if (e.button === 2 && left) { 
     fireYourFunctionForTwoButtons(); 
    } 
}) 

document.addEventListener('mouseup', e => { 
    if (e.button === 0) { 
     left = false; 
    } 
}); 
1

Mein Vorschlag für die verstrichene basiert Zeit in Millisekunden zwischen den zwei aufeinander folgenden Klicks:

$(function() { 
 
    $('#btn').data('last-left-click', 0).on('mousedown contextmenu', function (e) { 
 
    var nowTime = Date.now(); 
 
    if (e.which == 1) { 
 
     $(this).data('last-left-click', nowTime); 
 
    } 
 
    if (e.which == 3) { 
 
     // if less then 300 milliseconds.... 
 
     if ((nowTime - $(this).data('last-left-click')) < 300) { 
 
     console.log('Both left and right clicked in sequence in less then 300 milliseconds!'); 
 
     } 
 
     $(this).data('last-left-click', 0); 
 
    } 
 
    }); 
 
});
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script> 
 

 
<button id="btn">Click Me</button>