@andrei_pro

Контекст меню на windows?

Всем привет.

Задача: при отпускании правой кнопки мыши показать кастомное контекст меню. Так как при отпускании и нужно учитывать некоторые свойства из события при нажатии, решено открывать меню при mouseup событии.

Функцией:
document.oncontextmenu = () => false
глобально отключил контекст меню.

Далее есть компонент:

<div class="canvas-container"
         @contextmenu="onCM"
         @mousedown.prevent="onMouseDown"
         @mousemove="onMouseMove"
         @mouseup.prevent="onMouseUp">
</div>

<script>
methods: {
   onMouseDown(e) {
      switch (e.button) {
           case 0:
              return
           case 2:
              // Set custom cursor
           return
      }
   },
   onMouseUp(e) {
      if(e.button === 2) {
         // Show context menu
         return
      }
   },
   onCM(e) {
      e.preventDefault()
      return false
   }
}
</script>


Проблема: на винде во всех браузерах при открытии кастом контекст меню открывается и стандартное. При том событие contextmenu вообще не срабатывает, только mousedown, mouseup. preventDefault везде где только можно расставил.
На маке такой проблемы нету события все отрабатывают и стандартное меню не показывается.
  • Вопрос задан
  • 713 просмотров
Пригласить эксперта
Ответы на вопрос 1
delphinpro
@delphinpro
frontend developer
@mousedown.prevent="onMouseDown" — здесь вы знаете как использовать в vue preventDefault()

@contextmenu="onCM"
onCM(e) {
e.preventDefault()
return false
}

а здесь не знаете?

Очевидно стоит попробовать @contextmenu.prevent="onCM" или .stop
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы