Получение (нежелательного) события перемещения мыши при нажатии на изображение

StackOverflow https://stackoverflow.com/questions/1818668

Вопрос

У меня есть HTML-страница, на этой странице есть несколько изображений, когда пользователь нажимает на одно из этих изображений, его заменяет другое изображение.

<img style="cursor:hand" src="../_Img/click_me.png" onclick="ChangePic();">

Функция ChangePic ():

function ChangePic() {
var el = event.srcElement;
el.src = '../_Img/Clicked.png';}

У меня также есть ярлык на странице, который отображает текущее действие, например Перемещение / правый щелчок / левый щелчок / двойной щелчок.

В моей загрузке html-страницы у меня есть:

onmousemove="ShowAction('Move');" onmousedown="ShowKeysDown('Left','Middle','Right','click');"

Показать действие просто меняет метку. ShowKeysDown проверяет, какая кнопка была нажата, а затем вызывает ShowAction. (Строки в этом вызове для многоязычной поддержки)

Проблема, с которой я столкнулся, заключается в том, что когда пользователь щелкает изображение одним щелчком левой кнопки мыши, изображение корректно изменяется, метка меняется на «Левый щелчок» в течение доли секунды, а затем изменяется на «Переместить». «хотя никакого перемещения не произошло. Я подумал, что, возможно, один щелчок по изображению считается началом процедуры перетаскивания, но я не уверен.

Редактировать: когда пользователь не нажимает на изображение, а просто в некотором случайном пустом месте, метка корректно отображается как «Левый щелчок», пока он не переместит курсор, а затем изменится на «Переместить». Это поведение, которое я хотел бы при нажатии на изображения.

Спасибо за ваше время.

Примечание: это должно работать только в IE, так как это часть HTMLDialog в mfc.

Это было полезно?

Решение

Я предполагаю, что при взаимодействии с пользователем происходит следующее событие:

<Ол>
  • пользователь наводит указатель мыши на изображение - onmousemove - отображает 'Move' на ярлыке
  • пользователь нажимает на изображение (щелчок левой кнопкой мыши) - onmousedown - появляется "щелчок левой кнопкой мыши" на ярлыке
  • пользователь перемещает мышь из изображения - onmousemove - отображает 'Move' на ярлыке
  • Onmousemove будет запускаться, даже если пользователь перемещает мышь на пикселе на изображении.

    Таким образом, решение вашей проблемы будет следующим:

    <Ол>
  • иметь глобальный флаг
  • Установите его в обработчике события onmousedown
  • Проверьте этот флаг в обработчике события onmousemove, если он не установлен, отобразите «Move» на метке и, если он установлен, ничего не делайте
  • Имейте обработчик события onmouseout, сбросьте флаг в этом обработчике событий, поэтому снова при каждом запуске onmousemove он будет проверять флаг, и поскольку он не был установлен событием click, onmousemove будет отображать 'Move' на метке.
  • Надеюсь, это то, что вы хотели, как поведение !!!

    Другие советы

    Поправьте меня, если я ошибаюсь ... но вы используете событие onmousemove ... Разве поведение, которое вы испытываете, не является абсолютно нормальным?

    Почти невозможно щелкнуть объект без получения события mousemove ... вам нужно отфильтровать его, например, если ход слишком мал, игнорируйте его ...

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top