#javascript
Вопрос:
У меня есть следующий код для определения направления движения мыши
var direction = "";
var oldx = 0;
var oldy = 0;
mousemovemethod = function(e) {
if (e.pageX > oldx amp;amp; e.pageY == oldy) {
direction = "East";
} else if (e.pageX == oldx amp;amp; e.pageY > oldy) {
direction = "South";
} else if (e.pageX == oldx amp;amp; e.pageY < oldy) {
direction = "North";
} else if (e.pageX < oldx amp;amp; e.pageY == oldy) {
direction = "West";
}
document.body.innerHTML = direction;
oldx = e.pageX;
oldy = e.pageY;
}
document.addEventListener('mousemove', mousemovemethod);
Как сделать так, чтобы приведенный выше код работал только
- Если сработает щелчок левой или правой кнопкой мыши
- Когда мышь перемещается
- Если пользователь удерживает клавишу CTRL и перемещает мышь
Я знаю, что могу обнаружить щелчок CTRL со следующим кодом
$(document).keyup(function(e) {
if (e.keyCode == 17) {
console.log("cntrl key pressed");
}
});
P. s : Мне нужно, чтобы событие mousemove вызывалось непрерывно, когда я пытаюсь увеличивать и уменьшать масштаб диаграмм в своем приложении.
Ответ №1:
У вас есть два (или более) события (перемещение мыши, нажатие клавиши (скорее всего, нажатие клавиши вниз и вверх/отпускание для правильной обработки ctrl или использования значения, указанного в событии) и щелчок мыши). Между ними создайте глобальную переменную (т. Е. простую переменную, которая находится рядом со всеми 3 функциями событий), которая доступна во всех этих функциях событий. Установите для этой переменной значение true/false в событиях нажатия клавиши и щелчка мыши и проверьте это в событии перемещения мыши.
Этот код показывает ваше сообщение только в том случае, если (нажата клавиша ctrl или нажата левая/правая кнопка мыши) и мышь перемещена:
var direction = "";
var oldx = 0;
var oldy = 0;
var mouseIsHeld = false;
mouseMoveMethod = function (e) {
if (e.ctrlKey || mouseIsHeld) {
if (e.pageX > oldx amp;amp; e.pageY == oldy) {
direction="East";
}
else if (e.pageX == oldx amp;amp; e.pageY > oldy) {
direction="South";
}
else if (e.pageX == oldx amp;amp; e.pageY < oldy) {
direction="North";
}
else if (e.pageX < oldx amp;amp; e.pageY == oldy) {
direction="West";
}
document.body.innerHTML = direction;
oldx = e.pageX;
oldy = e.pageY;
}
}
mouseDownMethod = function (e) {
if (e.button === 0 || e.button === 2) {
mouseIsHeld = true;
}
}
mouseUpMethod = function (e) {
if (e.button === 0 || e.button === 2) {
mouseIsHeld = false;
}
}
document.addEventListener('mousemove', mouseMoveMethod);
document.addEventListener('mousedown', mouseDownMethod);
document.addEventListener('mouseup', mouseUpMethod);
// Prevent context menu popup, so we can move our mouse.
document.addEventListener('contextmenu', function(e) {
e.preventDefault();
return false;
}, false);
Комментарии:
1. Спасибо, как мне это сделать, когда мышь щелкает вниз !
2. Вот оно, с этого момента вам нужно уметь настраивать его так, как вам нужно.