2016-03-13 3 views
1

Я строй игрыКак определить правую кнопку мыши + левый клик

И мне нужно что-то делать, когда пользователь нажимает на правой кнопке мыши, держит его и затем нажимает левую кнопку

Как определить это поведение?

+0

Добро пожаловать на SO. Пожалуйста, посетите [помощь], чтобы узнать, как спросить. Подсказка: Показать код. Я на самом деле думал, что это дубликат http://stackoverflow.com/questions/1206203/how-to-distinguish-between-left-and-right-mouse-click-with-jquery – mplungjan

ответ

4

JSfiddle: https://jsfiddle.net/mkarajohn/pd725ch6/5/

var rightMouseClicked = false; 

function handleMouseDown(e) { 
    //e.button describes the mouse button that was clicked 
    // 0 is left, 1 is middle, 2 is right 
    if (e.button === 2) { 
    rightMouseClicked = true; 
    } else if (e.button === 0) { 
    //Do something if left button was clicked and right button is still pressed 
    if (rightMouseClicked) { 
     console.log('hello'); 
     //code 
    } 
    } 
    console.log(rightMouseClicked); 
} 

function handleMouseUp(e) { 
    if (e.button === 2) { 
    rightMouseClicked = false; 
    } 
    console.log(rightMouseClicked); 
} 

document.addEventListener('mousedown', handleMouseDown); 
document.addEventListener('mouseup', handleMouseUp); 
document.addEventListener('contextmenu', function(e) { 
    e.preventDefault(); 
}); 
+0

спасибо, за что вы используете preventDefault()? –

+0

Нет особой причины, просто добавил их в какой-то момент и забыл о них. –

+0

Только что обновил ответ, включив функцию preventDefault, чтобы контекстное меню не отображалось по правому клику. –

0

Вы можете попробовать этот вариант.

window.oncontextmenu = function() { 
    showCustomMenu(); 
    return false;  // cancel default menu 
} 

на правой кнопке мыши каждый браузер имеет меню по умолчанию для освежающей страницы, печати, сохранения и многих других, но вы можете попробовать это и можете быть это поможет предотвратить действие по умолчанию и добавить свой обычай. напишите ответ, если он вам поможет.

+0

Это событие не поддерживается повсеместно и не активирует отключенные элементы в IE. –

+0

Хорошо, спасибо за информирование :) – George

0

Хиэ

проверка кода ниже

<!doctype html> 
<html lang="en"> 
<head> 
    <input type='button' value='Click Me!!!' id='btnClick'/> 
    <script src="https://code.jquery.com/jquery-1.10.2.js"></script> 
</head> 
<body> 

<script> 
$(document).ready(function() { 
$('#btnClick').mousedown(function(event){ 
    switch (event.which) { 
     case 1: 
      alert('Left mouse button pressed'); 
      break; 
     case 2: 
      alert('Middle mouse button pressed'); 
      break; 
     case 3: 
      alert('Right mouse button pressed'); 
      break; 
     default: 
      break; 
    } 
}); 
}); 
</script> 

</body> 
</html> 

Для получения дополнительной справки см http://www.jquerybyexample.net/2011/04/find-which-mouse-button-clicked-using.html

0

U se MouseEvent.buttons в вашем обработчике событий.

<element>.addEventListener("mousedown", function(event){ 
    if ((event.buttons & 3) === 3){ 
     //Do something here 
    } 
}, true); 

Это, однако, последнее, хотя, возможно, вы захотите реализовать метод возврата, записывая состояние кнопок мыши.

0

для правильного использования мыши oncontextmenu и оставил только настроить click, просто отключить их поведение по умолчанию, если вы хотите тоже например:

var left = 0, 
 
    right = 0; 
 

 
document.onclick = function() { 
 
    console.log(++left); 
 
    return false; 
 
}; 
 

 
document.oncontextmenu = function() { 
 
    console.log(++right); 
 
    return false; 
 
};

+0

событие 'click', созданное после нажатия кнопки пользователя. Автор хочет получить уведомление, когда обе кнопки удерживаются, я думаю – nekavally

Смежные вопросы