Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.01.2011, 21:12
Кандидат Javascript-наук
Отправить личное сообщение для PAMAC Посмотреть профиль Найти все сообщения от PAMAC
 
Регистрация: 12.08.2009
Сообщений: 116

Почему 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 не успевает перещаться за мышкой, при быстром движении? Как это можно исправить?
Ответить с цитированием
  #2 (permalink)  
Старый 27.01.2011, 21:15
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,124

Сообщение от PAMAC
Как это можно исправить?
Как бы ты не исправлял - всегда можно так "махнуть" мышкой, что и отрисовать браузер неуспеет...
Ответить с цитированием
  #3 (permalink)  
Старый 27.01.2011, 21:17
Кандидат Javascript-наук
Отправить личное сообщение для PAMAC Посмотреть профиль Найти все сообщения от PAMAC
 
Регистрация: 12.08.2009
Сообщений: 116

Это да... но тут даже если совсем немного махнёшь - div не успевает((
Ответить с цитированием
  #4 (permalink)  
Старый 27.01.2011, 21:23
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

учитывая что без отрисовки браузере не всегда успевает координаты все по пути считывать...
Ответить с цитированием
  #5 (permalink)  
Старый 27.01.2011, 21:24
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,124

PAMAC, ты например не указываеш 'px' при присвоении новых координат топу и лефту...Может так хоть рисоваться быстрее будет.
Ответить с цитированием
  #6 (permalink)  
Старый 27.01.2011, 21:34
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

обработчики событий мыши(перемещения) отрабатывают не мгновенно.
это связано в частности с однопоточностью языка.
как результат, между двумя возникшими событиями проходит время достаточное, чтобы вы успели сдвинуть мушку более чем на 1 пиксель.

А если же вы успеете за это время(что вполне реально) убрать курсор с данного DIV-а, то новые события не буду возникать.
вне DIV-а, курсор будет спокойной передвигатся, не вызывая никаких событий на DIV-е

Именно это у вас и происходит.

Вам надо отлавливать событие на более крупном контейнере(например body), а перемещать ваш конкретный DIV
Ответить с цитированием
  #7 (permalink)  
Старый 28.01.2011, 18:39
Кандидат Javascript-наук
Отправить личное сообщение для PAMAC Посмотреть профиль Найти все сообщения от PAMAC
 
Регистрация: 12.08.2009
Сообщений: 116

благодарю
Ответить с цитированием
  #8 (permalink)  
Старый 31.01.2011, 13:32
Ламер
Отправить личное сообщение для DooMer Посмотреть профиль Найти все сообщения от DooMer
 
Регистрация: 19.02.2010
Сообщений: 295

PAMAC,
когдато давно в МСДН читал, что майкрософт не гарантирует, что окно обработает событие мыши если провести быстро быстро =)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При клике ссылки, открыть DIV блок, и при клике ещё раз, закрыть его Simon Общие вопросы Javascript 59 28.05.2017 17:31
при нажатии на картинку(типа кнопки) скрывать и показывать DIV Russianmaniac Элементы интерфейса 4 28.11.2010 00:47
Почему в Opera исчезает курсор при нажатии клавиши Esc ? Маэстро Opera, Safari и др. 3 23.11.2010 16:31
Как сделать? При выходе мышкой за пределы окна браузера, начинает грузится другая стр alb Events/DOM/Window 13 01.09.2010 12:19
Подгрузка контента в определённый DIV при нажатии на ссылку, без перезагрузки страниц Flashton Events/DOM/Window 0 10.03.2010 19:53