События: движение мыши при нажатой клавише
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);
*/
}
}
|
это происходит как раз из за alert('move')
при alert теряем mouseup напишите
if(down == 1){document.body.innerHTML='move';
}else
{document.body.innerHTML='no';}
будет нормально |
о - мерси, я думал таймер вешать на функцию, а почему так с алертом обстоит?
функция не идет дальше пока я не нажму "ок" в поле алерта? и есть же вроде способ параллельно пустить выполнение? мне это в принципе не нужно именно, но хочу просто понять каков механизм. |
Цитата:
да и вообще лучше выводить в див инфу чем в алерт |
Цитата:
|
Цитата:
|
А проще события мыши нет? Мне нужно чтобы при движении мыши с нажатой клавишей выводилось сообщение!
|
<script>
down = 0;
onmousedown = function(){down = 1;}
onmousemove = function(){down ? alert(true) : 0;}
onmouseup = function(){down = 0;}
</script>
|
Окно сообщения (true) не закрывается а постоянно вылазит!
|
<script>
down = 0;
onmousedown = function(){down = 1;}
onmousemove = function(){if(down){alert(true); down = 0;}}
</script>
|
К сожаленью, в данном случае окно вылазит при простом нажатии, а необходимо только при перемещении нажатой мыши.
|
kolhoznik, я как понимаю, Вы делаете передвижение объектов мышью? Если да, вот Вам мой вариант на скорую руку. Проверял в опере и хроме.
<div style="width:200px; height:500px; background:#000; position:fixed"><div onmousedown="Drag(this)" style="width:200px; height:50px; cursor:move; background:red"></div></div>
<script>
var DragZ = 100;
function Drag(a)
{
var b = 1, c = a.parentNode.style, e = this, f = 1, g, h;
DragZ++;
c.zIndex = DragZ;
a.onmousemove = function()
{
if(b)
{
if(f)
{
g = e.event.offsetX;
h = e.event.offsetY;
f = 0;
}
c.marginLeft = e.event.clientX-g;
c.marginTop = e.event.clientY-h;
}
}
window.onmouseup = function()
{
b = 0;
}
}
</script>
|
| Часовой пояс GMT +3, время: 11:37. |