Как захватить щелчок мышью с помощью JavaScript, когда мышь перемещается между mousedown и mouseup - PullRequest
4 голосов
/ 20 сентября 2010

Я создаю веб-сайт с прокруткой временной шкалы JavaScript, используя код этого урока . Здесь есть демонстрационная версия здесь .

Моя проблема заключается в следующем: если пользователь щелкает по временной шкале, чтобы перетащить его, и он случайно щелкает ссылку, то когда кнопка мыши отпускается, браузер интерпретирует это как щелчок по ссылке. Следовательно, очень легко случайно уйти от графика времени.

Мне нужно следующее поведение: щелкнув ссылку only , запускает навигацию , если мышь не перемещалась между mousedown и mouseup. Если мышь перемещали, пока кнопка удерживается нажатой, ссылка не переходит, поскольку пользователь пытается переместить временную шкалу, а не щелкнуть ссылку.

Возможно ли это? У меня такое чувство, что нам нужна логическая переменная is_mouse_moved , которая имеет значение false при mousedown и значение true при mousemove. Затем при mouseup мы проверяем, следует ли «передавать» событие mouseup браузеру. Как вы можете сказать, я не слишком знаком с JS!

Любая помощь приветствуется.

Ответы [ 3 ]

2 голосов
/ 20 сентября 2010

Возможно, вы захотите сохранить координаты при запуске события mousedown и прочитать координаты в вашем mouseup , чтобы увидеть, изменились ли они на значительное количество. Quirksmode имеет довольно хорошую документацию по чтению координат из событий мыши:

http://www.quirksmode.org/js/events_properties.html

2 голосов
/ 20 сентября 2010

Ваш правильный. Решением является просто создание переменной флага, которая всякий раз, когда пользователь перетаскивает временную шкалу, ( event.preventDefault () ) привязывает теги. Это решение может создавать больше ошибок, потому что, если пользователь «случайно» слегка перетаскивает временную шкалу, но он хочет щелкнуть ссылку? временная шкала может быть не такой отзывчивой.

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

2 голосов
/ 20 сентября 2010

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

...