Почему Div не успевает за мышкой при быстром перемещии?
Добрый вечер!
<script> var elemX = elemY = 0; var drag = false; function my2(event,el){ event = event || window.event; elemX=event.clientX+document.body.scrollLeft-parseInt(el.style.left); elemY=event.clientY+document.body.scrollTop-parseInt(el.style.top); drag=true; } function my(event,el) { event = event || window.event; if(drag){ el.style.left=event.clientX+document.body.scrollLeft-elemX; el.style.top=event.clientY+document.body.scrollTop-elemY; } } </script> <div style="background-color:red; width:100px; height:100px; position:absolute; left:0px; top:0px;" onMouseDown="my2(event,this);" onMouseMove="my(event,this);"></div> Почему div не успевает перещаться за мышкой, при быстром движении? Как это можно исправить? |
Цитата:
|
Это да... но тут даже если совсем немного махнёшь - div не успевает((
|
учитывая что без отрисовки браузере не всегда успевает координаты все по пути считывать...
|
PAMAC, ты например не указываеш 'px' при присвоении новых координат топу и лефту...Может так хоть рисоваться быстрее будет. :)
|
обработчики событий мыши(перемещения) отрабатывают не мгновенно.
это связано в частности с однопоточностью языка. как результат, между двумя возникшими событиями проходит время достаточное, чтобы вы успели сдвинуть мушку более чем на 1 пиксель. А если же вы успеете за это время(что вполне реально) убрать курсор с данного DIV-а, то новые события не буду возникать. вне DIV-а, курсор будет спокойной передвигатся, не вызывая никаких событий на DIV-е Именно это у вас и происходит. Вам надо отлавливать событие на более крупном контейнере(например body), а перемещать ваш конкретный DIV |
благодарю
|
PAMAC,
когдато давно в МСДН читал, что майкрософт не гарантирует, что окно обработает событие мыши если провести быстро быстро =) |
Часовой пояс GMT +3, время: 23:46. |