Как вы «обходите» мышь?

0

Я пытаюсь сделать так, чтобы, когда пользователь щелкает вниз, это происходит.

В порядке,

Делает что-то. (Не будучи конкретным, это не важная часть.)

Вызывается Mouse up.

Использование: угловой, html, css. Не использовать: jQuery

Какие-либо предложения? Благодарю!

Теги:
mouseevent

2 ответа

1
Лучший ответ

Вы придаете два слушателя событий, один в то время как пользователь мыши нажатой mousedown. Как только пользователь отпустит событие mouseup запускается. Все прослушиватели событий мыши передают объект event вы можете использовать для получения информации о событии, то есть: mouse x и y. event.preventDefault() из доступных методов - event.preventDefault() это остановит браузер делать то, что он обычно хочет сделать, Пример: cmd/ctrl + s заставит браузер сохранить страницу html. preventDefault остановит это.

document.addEventListener('mousedown' function (event) {
    // Do something
})
document.addEventListener('mouseup', function (event) {
    event.preventDefault()
})

Чтобы ответить на комментарий ОП:

var noMouseUp = true
document.addEventListener('mousedown', function () {
  if (noMouseUp) {
      // do something
      noMouseUp = false
  }
})
document.addEventListener('mouseup', function (event) {
 if (!noMouseUp) {
    noMouseUp = true
 }

})

  • 0
    Хотя это может решить проблему ОП, почему бы не остановиться на этом решении? Сделал бы для отличного чтения для людей с той же проблемой ...
  • 0
    @LinusKleen обновлен, с соответствующей информацией
Показать ещё 3 комментария
0

Использовать events.preventDefault(); в обратном вызове mouseup.

Используйте, сразу после, event.stopPropagation(); чтобы избежать передачи события другим слоям.

bypassed_element.onclick = function(event){

      event.preventDefault();
      event.stopPropagation();
};
  • 0
    $scope.insertString = function(letter) { //$scope.name = $scope.name + letter; $scope.name = [$scope.name.slice(0,$scope.cursorPosVal),letter,$scope.name.slice($scope.cursorPosVal)].join(''); console.log($scope.name); setTimeout(function(){ setCaretPosition("inputBox", $scope.cursorPosVal); }, 5); }; Если это мой код, обернул бы я его .onclick =?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню