首页 > 解决方案 > 延迟打开上下文菜单

问题描述

我想contextmenu在 1 秒延迟后显示元素(如按下鼠标右键时)。到目前为止我做了什么:

1) 尝试使用 promise 延迟回调的执行 - 不起作用,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>

标签: javascriptdomdom-events

解决方案


看看这个(https://swisnl.github.io/jQuery-contextMenu/demo.html)。实现上下文菜单的工具之一。这样,您就可以完全控制上下文菜单的行为。


推荐阅读