Задержка открытия контекстного меню - PullRequest
0 голосов
/ 18 марта 2020

Я хочу показать contextmenu элемента (как при нажатии правой кнопки мыши) после 1 с задержки. Что я сделал до сих пор:

1) Попытка задержать выполнение обратного вызова с обещаниями - не работает, contextmenu отображается асинхронно и не имеет отношения к выполнению обратного вызова.

p.addEventListener('contextmenu', e => {  // contextmenu is shown instantly
  new Promise(resolve => setTimeout(resolve, 1000))
  .then(() => console.log('1 s passed'))  // shown in 1 s
})
<p id="p">Hello</p>

2) Отправляется new Event сам - нет contextmenu вообще в этом случае

enter code here

p.addEventListener('mousedown', e => {
  const contextmenu = new MouseEvent('contextmenu')
	setTimeout(() => p.dispatchEvent(contextmenu), 1000)	
})

p.addEventListener('contextmenu', e => {
	console.log('contextmenu event arrived')  // message is shown in 1 s but no contextmenu
})
<p id="p">Hello</p>

1 Ответ

0 голосов
/ 19 марта 2020

Проверьте это (https://swisnl.github.io/jQuery-contextMenu/demo.html). Один из инструментов для реализации контекстного меню. Благодаря этому вы полностью контролируете поведение контекстного меню.

...