События мыши

Последнее обновление: 29.10.2023

Одну из наиболее часто используемых событий составляют события мыши:

  • click: возникает при нажатии указателем мыши на элемент

  • dblclick: возникает при двойном нажатии указателем мыши на элемент

  • contextmenu: возникает при открытии контекстного меню (правой кнопкой мыши)

  • mousedown: возникает при нахождении указателя мыши на элементе, когда кнопка мыши находится в нажатом состоянии

  • mouseup: возникает при нахождении указателя мыши на элементе во время отпускания кнопки мыши

  • mousemove: возникает при прохождении указателя мыши над элементом

  • mouseover: возникает при вхождении указателя мыши в границы элемента

  • mouseout: возникает, когда указатель мыши выходит за пределы элемента

  • mouseenter: возникает при вхождении указателя мыши в границы элемента

  • mouseleave: возникает, когда указатель мыши выходит за пределы элемента

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

Например, обработаем события mouseover и mouseout:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title>METANIT.COM</title>
	<style>
	#blueRect{
		width:100px;
		height:100px;
		background-color:blue;
	}
	</style>
</head>
<body>
<div id="blueRect"></div>

<script>
function setColor(e){
	if(e.type==="mouseover")
		e.target.style.backgroundColor = "red";
	else if(e.type==="mouseout")
		e.target.style.backgroundColor = "blue";
}
const blueRect = document.getElementById("blueRect");
blueRect.addEventListener("mouseover", setColor);
blueRect.addEventListener("mouseout", setColor);
</script>
</body>
</html>

Теперь при наведении указателя мыши на блок blueRect он будет окрашиваться в красный цвет, а при уходе указателя мыши - блок будет обратно окрашиваться в синий цвет.

MouseEvent

Объект Event является общим для всех событий. Однако для разных типов событий существуют также свои объекты событий, которые добавляют ряд своих свойств. Так, для работы с событиями указателя мыши определен объект MouseEvent, который добавляет следующие свойства:

  • altKey: возвращает true, если была нажата клавиша Alt во время генерации события

  • button: содержит номер нажатой кнопки мыши

  • buttons: содержит номер, который представляет нажатую кнопку мыши. 1 обозначает левую кнопку мыши, 2 — правую кнопку мыши, 4 — колесо мыши или среднюю кнопку мыши, 8 — четвертую кнопку мыши, а 16 — пятую кнопку мыши. Если при срабатывании события было нажато несколько кнопок, это свойство содержат сумму соответствующих чисел.

  • clientX: определяет координату Х окна браузера, на которой находился указатель мыши во время генерации события

  • clientY: определяет координату Y окна браузера, на которой находился указатель мыши во время генерации события

  • ctrlKey: возвращает true, если была нажата клавиша Ctrl во время генерации события

  • movementX: содержит координату Х относительно предыдущей координаты X при последнем событии перемещения мыши

  • movementY: содержит координату Y относительно предыдущей координаты Y при последнем событии перемещения мыши

  • metaKey: возвращает true, если была нажата во время генерации события метаклавиша клавиатуры

  • region: содержит идентификатор области или элемента, которая относится к событию

  • relatedTarget: определяет вторичный источник возникновения события

  • screenX: определяет координату Х относительно верхнего левого угла экрана монитора, на которой находился указатель мыши во время генерации события

  • screenY: определяет координату Y относительно верхнего левого угла экрана монитора, на которой находился указатель мыши во время генерации события

  • shiftKey: возвращает true, если была нажата клавиша Shift во время генерации события

Определим координаты клика:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<style>
	#blueRect{
		width:100px;
		height:100px;
		background-color:blue;
	}
	</style>
</head>
<body>
<div id="blueRect"></div>

<script>
function handleClick(e){
	console.log("screenX: " + e.screenX);
	console.log("screenY: " + e.screenY);
	console.log("clientX: " + e.clientX);
	console.log("clientY: " + e.clientY);
}
const blueRect = document.getElementById("blueRect");
blueRect.addEventListener("click", handleClick);
</script>
</body>
</html>
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850