Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   События: движение мыши при нажатой клавише (https://javascript.ru/forum/misc/29872-sobytiya-dvizhenie-myshi-pri-nazhatojj-klavishe.html)

bayah 14.07.2012 19:33

События: движение мыши при нажатой клавише
 
var down = 0;
var x = 0;
var y = 0;
Как отловить движение мыши при нажатой клавише?
Вот этот код вызывает бесконечное alert('move'). Почему это происходит? Почему отжатие мыши не вызывает присвоение down = 0
?
document.onmousedown = function(e) {
  e = e || window.event;
  down = 1;
  x = e.clientX;
  y = e.clientY;

  //alert(e.clientX);
  //alert(down);
}


document.onmouseup = function(e){
	e = e || window.event;
	down = 0;
	//alert(x);
}

document.onmousemove = function(e){
	e = e || window.event;
	if(down == 1){
		alert('move');
	/*
		var dx = e.clientX - x;
		var dy = e.clientY - y;
		alert(dx);
		*/
	}
	
}

vadim5june 14.07.2012 19:57

это происходит как раз из за alert('move')
при alert теряем mouseup
напишите
if(down == 1){document.body.innerHTML='move';
		}else
{document.body.innerHTML='no';}

будет нормально

bayah 14.07.2012 20:40

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

vadim5june 14.07.2012 20:48

Цитата:

Сообщение от bayah (Сообщение 188879)
мне это в принципе не нужно именно, но хочу просто понять каков механизм.

Почему не могу точно сказать просто такими вещами-drop and drap(самописными)занимаюсь давно и знаю что алерт при mousemove нельзя использовать-событие mouseup не срабатывает
да и вообще лучше выводить в див инфу чем в алерт

vadim5june 14.07.2012 20:49

Цитата:

Сообщение от bayah (Сообщение 188879)
и есть же вроде способ параллельно пустить выполнение?
.

в javascript нет такой возможности

bes 15.07.2012 16:29

Цитата:

Сообщение от vadim5june
напишите
if(down == 1){document.body.innerHTML='move';
        }else
{document.body.innerHTML='no';}

будет нормально

Портим body :)

kolhoznik 17.12.2012 19:31

А проще события мыши нет? Мне нужно чтобы при движении мыши с нажатой клавишей выводилось сообщение!

ruslan_mart 17.12.2012 20:20

<script>
down = 0;
onmousedown = function(){down = 1;}
onmousemove = function(){down ? alert(true) : 0;}
onmouseup = function(){down = 0;}
</script>

kolhoznik 17.12.2012 20:33

Окно сообщения (true) не закрывается а постоянно вылазит!

ruslan_mart 17.12.2012 20:58

<script>
down = 0;
onmousedown = function(){down = 1;}
onmousemove = function(){if(down){alert(true); down = 0;}}
</script>


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