我目前使用react modal来实现右键单击上下文菜单。我这样做是通过从事件处理程序中捕获事件对象并将模式内容left和top属性设置为event.clientX和event.clientY来实现的。我有一个问题,有时我需要在模式叠加上单击两次以关闭上下文菜单,或者先单击模式内容,然后再单击叠加。我可以用任何一种方式关闭模式。但是,我不知道为什么我应该单击两次以关闭模式。
我知道这不是响应模态本身的问题,可能与我使用的应用程序有关,但我想知道是什么原因可能导致此问题?我使用了chrome调试器来捕获click事件并在文档对象上设置click侦听器。它确实检测到单击事件,但偶尔会忽略对模式叠加的第一次单击。我还在处理程序函数中设置了断点,该断点用于控制模式打开/关闭状态,但有时不会在第一次单击时调用。我将模式叠加层z-index设置为一个非常高的值(例如9999),但也无法正常工作。
谁能给我任何线索,或者我可以使用什么程序来解决我遇到的问题?很抱歉没有提供任何代码示例,因为将相同的代码粘贴到Codepen上时我没有这个问题。我想这是我使用的应用程序中的问题
更新:当我通过右键单击创建上下文菜单时,也会显示浏览器的默认上下文菜单。在这种情况下,我需要单击两次以首先关闭浏览器上下文菜单,然后再次单击以关闭我的上下文菜单。但是,当我调用 event.preventDefault()时,它确实阻止了浏览器上下文菜单的显示,但是我仍然需要单击两次以关闭上下文菜单。
然后,我将创建上下文菜单侦听器更改为 onClick (本来我将其设置为 onContextMenu ,因为这是我希望上下文菜单显示的方式),现在它只需单击一次叠加即可成功关闭上下文菜单。即使我禁用了浏览器默认上下文菜单,右键单击仍然可以更改当前的焦点元素吗?