Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Координаты курсора над блоком (https://javascript.ru/forum/events/20946-koordinaty-kursora-nad-blokom.html)

Telnet 23.08.2011 17:08

Координаты курсора над блоком
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Координаты курсора над блоком</title>
</head>

<body>
<div style="margin:10%;">
	<div id="detect" style="background-color:#C69; height:150px; width:80%;"></div>

<label for="PosX">Координаты X<input id="PosX" name="PosX" type="text" /></label>
<label for="PosY">Координаты Y<input id="PosY" name="PosY" type="text" /></label>
</div>
</body>
</html>

Как определить положение курсора именно над блоком id="detect" и вывести полученные координаты в тестовые поля
как это сделать на Jquery я знаю, но нужно именно на JavaScript желательно кросс браузерно

melky 23.08.2011 17:20

кстати, вопрос к ребятам : IE 9 в режиме имитации IE 7 .. его имитирует полностью ? или есть что-то отличающееся?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Координаты курсора над блоком</title>
</head>

<body>
<div style="margin:10%;">
    <div id="detect" style="background-color:#C69; height:150px; width:80%;"></div>

<label for="PosX">Координаты X<input id="PosX" name="PosX" type="text" /></label>
<label for="PosY">Координаты Y<input id="PosY" name="PosY" type="text" /></label>
</div>
</body>
</html>

<script type="text/javascript">
var x = document.getElementById("PosX"),
    y = document.getElementById("PosY"),
    el = document.getElementById("detect");

el.onclick = function(e){
    if(!e) e = event
*!*
    x.value = e.offsetX;
    y.value = e.offsetY;
*/!*
}
</script>

Telnet 23.08.2011 17:38

не написал наверное нужно не поклику а отследивать место положение курсора, кажется mousemoove

Telnet 23.08.2011 17:48

все спасибо пределал
el.onmousemove

Telnet 23.08.2011 18:33

не большая доработка
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Координаты курсора над блоком</title>
</head>

<body>
<div style="margin:10%;">
    <div id="detect" style="background-color:#C69; height:150px; width:80%;"></div>

<label for="PosX">Координаты X<input id="PosX" name="PosX" type="text" /></label>
<label for="PosY">Координаты Y<input id="PosY" name="PosY" type="text" /></label>
<label for="bgX">Начало<input id="bgX" name="bgX" type="text" /></label>
</div>
</body>
</html>

<script type="text/javascript">
var begin=0;
var x = document.getElementById("PosX"),
    y = document.getElementById("PosY"),
	bgX = document.getElementById("bgX"),
    el = document.getElementById("detect");

el.onmousemove = function(e){
    if(!e) e = event
	x.value = e.offsetX;
    y.value = e.offsetY;
	var begin = e.offsetX;
	bgX.value = e.offsetX;
	if (begin < (e.offsetX+15) ){
	begin=e.offsetX;
	alert("движение вправо");
	}
	if (begin < (e.offsetX-15) ){//|| begin<(e.offsetX-15
	begin=e.offsetX;
	alert("движение влево");
	}
}
el.onmouseout = function(e){
	begin=0;
}
</script>


Вообщем нужно что б когда пользователь водит мышкой по блоку туда сюда всплывало сообщение о том, что мышка прошла 15 влево или вправо
Сейчас показывает всегда движение вправо притом как только я навожу курсор на блок без движение по самому блоку
При уводе курсора с блока begin сбрасываем


Часовой пояс GMT +3, время: 14:10.