Отслеживание останова во время события onmousemove
В общем имеется обработчик события скролла на перемещение его мышью:
// Обработчик нажатия на скролл $(scroll.id + ' .scroll_polz_v').mousedown(function(e){ e.preventDefault(); var start = e.pageY - $(this).offset().top; var start_top = $(this).offset().top - $(this).position().top; // Обработчик перемещения $(document).mousemove(function(e){ scroll.mousemove = true; var top = e.pageY - start_top - start; var top_gr = $(scroll.id + ' .scroll_body_v').height()- $(scroll.id + ' .scroll_polz_v').height() - 11; if (top >= 0 && top <= top_gr) { if ((top + 10) >= top_gr){ $(scroll.id + ' .scroll_polz_v').css('top', top); sp = scroll.cell_count * scroll.row_count - 10; scroll.position = sp; } else{ $(scroll.id + ' .scroll_polz_v').css('top', top); var sp = Math.floor(top/((scroll.height-scroll.polzh)/scroll.cell_count)) * scroll.row_count; scroll.position = sp; } } }); }); Так вот предложили реализовать подсказку: Цитирую заказчика: Можно ли так сделать чтобы хинт при наведении мыши на указатель и удержании кнопки мыши показывал время целевого перемещения? Чтобы юзер перемещая мышью указатель наглядно видел куда (на какое время) он его устанавливает. время - это то, что будет показываться в окне, которое должно появляться pop-up который всплывает при одновременной сработке 2-х событий кнопка мыши удерживается над указателем указатель статичен (т.е. во время перетаскивания не нужно показывать) т.о. pop-up будет только при начале движения (с момента нажатия кнопки, но до начала движения, если быть точнее) и в конечной (или промежуточной) точке, пока пользователь удерживает кнопку мыши кнопку мыши отпустил - pop-up исчез, окно матрицы начало перестраиваться Вот я и думаю, как можно сделать это. Можете подсказать. Ну хотя бы сказать возможно ли это и за счет чего? Как узнать, что пользователь перестал перетаскивать мышь? |
У вас при каждом событии mousedown дублируется обработчик document.onmousemove. В конце концов их будет под сотню и все начнет тормозить :)
Цитата:
|
e.preventDefault();
Разве не сбрасываются все предыдущие обработчики этой функцией? |
Вложений: 1
Ну в общем конечный вариант объекта скролла выглядит следующим образом (во вложениях)
|
По событию
1. Убивать старый таймаут (если есть) 2. Запускать новый таймаут. По срабатыванию таймаута делать что надо. Пока мышка двигается, таймаут не наступит, т.к. будет постоянно перезапускаться. Что-то похожее я делал пару лет назад: Цитата:
|
Вот, нарисовал примерчик:
<html> <head> <script type="text/javascript"> var to = null; // не знаю нужно ли, но для порядка пусть будет </script> </head> <body> Подвигайте мышкой на красном прямоугольнике, а потом остановите <div style="width:160px;height:90px;background-color:red" onmousemove="if(to) clearTimeout(to); to = setTimeout( 'alert(\'мышка остановилась\')', 500 );" onmouseout="if(to) clearTimeout(to); to = null"> <!-- пусто --> <div> </body> </html> |
Вложений: 2
Цитата:
|
Часовой пояс GMT +3, время: 01:29. |