События мыши
Одно из наиболее часто используемых событий составляют события мыши:
click()возникает при нажатии указателем мыши на элементdblclick()двойной клик по элементуmousedown()возникает при нахождении указателя мыши на элементе, когда кнопка мыши находится в нажатом состоянииmouseupвозникает при нахождении указателя мыши на элементе во время отпускания кнопки мышиmouseover()возникает при вхождении указателя мыши в границы элементаmousemoveвозникает при прохождении указателя мыши над элементомmouseout()возникает, когда указатель мыши выходит за пределы элементаcontextmenu()срабатывает при нажатии правой кнопки мышиmousemove()указатель мыши движется внутри области отображения элементаmouseenter()срабатывает, когда указатель мыши заходит на элементmouseleave()срабатывает, когда указатель мыши выходит из элементаmouseup()срабатывает, когда отжимается кнопка мыши
Например, обработаем события mouseover и mouseout:
<!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 setColor(e){
if(e.type==="mouseover")
e.target.style.backgroundColor = "red";
else if(e.type==="mouseout")
e.target.style.backgroundColor = "blue";
}
var blueRect = document.getElementById("blueRect");
blueRect.addEventListener("mouseover", setColor);
blueRect.addEventListener("mouseout", setColor);
</script>
</body>
</html>
Теперь при наведении указателя мыши на блок blueRect он будет окрашиваться в красный цвет, а при уходе указателя мыши — блок будет обратно окрашиваться в синий цвет.
Объект Event является общим для всех событий. Однако для разных типов событий существуют также свои объекты событий, которые добавляют ряд своих свойств. Так, для работы с событиями указателя мыши определен объект MouseEvent, который добавляет следующие свойства:
altKeyвозвращаетtrue, если была нажата клавишаAltво время генерации событияbuttonуказывает, какая кнопка мыши была нажатаclientXопределяет координатуХокна браузера, на которой находился указатель мыши во время генерации событияclientYопределяет координатуYокна браузера, на которой находился указатель мыши во время генерации событияctrlKeyвозвращаетtrue, если была нажата клавишаCtrlво время генерации событияmetaKeyвозвращаетtrue, если была нажата во время генерации события метаклавиша клавиатуры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);
}
var blueRect = document.getElementById("blueRect");
blueRect.addEventListener("click", handleClick);
</script>
</body>
</html>