Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以在右键单击的浏览器上下文菜单上检测到左键单击?_Javascript_Mouseevent_Contextmenu - Fatal编程技术网

Javascript 是否可以在右键单击的浏览器上下文菜单上检测到左键单击?

Javascript 是否可以在右键单击的浏览器上下文菜单上检测到左键单击?,javascript,mouseevent,contextmenu,Javascript,Mouseevent,Contextmenu,一个对话框、一个菜单或其他HTML元素在点击时弹出一个链接,这是一种相当常见的模式。例如,如果单击堆栈溢出编辑框上方的橙色问号,它会为“链接”、“图像”等添加一组链接。然后,再次单击问号时,菜单将消失 我有一个类似的设置,只是我希望当用户点击菜单以外的任何地方时,菜单消失。这并不难($(document.body)。单击(handleclickwhere))。然而,困难的是以下情况: 用户单击以打开菜单 用户右键单击菜单中的一个链接(显示浏览器上下文菜单) 用户在浏览器的上下文菜单上的“在新选项

一个对话框、一个菜单或其他HTML元素在点击时弹出一个链接,这是一种相当常见的模式。例如,如果单击堆栈溢出编辑框上方的橙色问号,它会为“链接”、“图像”等添加一组链接。然后,再次单击问号时,菜单将消失

我有一个类似的设置,只是我希望当用户点击菜单以外的任何地方时,菜单消失。这并不难($(document.body)。单击(handleclickwhere))。然而,困难的是以下情况:

  • 用户单击以打开菜单
  • 用户右键单击菜单中的一个链接(显示浏览器上下文菜单)
  • 用户在浏览器的上下文菜单上的“在新选项卡中打开”菜单项上单击鼠标左键
  • 用户将被带到新选项卡中的链接,但是
  • 菜单在原始页面上保持打开状态
  • 上面的困难之处在于,在这种情况下,我想关闭菜单;当用户返回到他们原来的选项卡时,菜单仍然打开,这看起来有点傻。不幸的是,似乎没有任何方法可以检测到用户单击了“在新选项卡中打开”,因此我无法关闭菜单进行响应。我可以关闭菜单以响应用户的右键单击(上面的第2步),但是他们将无法选择“在新选项卡中打开”,因为链接将消失

    我尝试过jQuery的click、mouseup、mousedown和contextmenu事件,但它们似乎都没有抓住这个问题

    还有谁想出了解决这个问题的办法吗?或者,如果这是不可能的,有谁能比我更有知识,明确解释为什么?我的猜测是,浏览器没有告诉您第4步中的点击,但我没有真正的依据进行猜测。

    您可以检查是否有,然后做出适当的反应(即关闭菜单)


    但这假定浏览器默认设置为“切换到新选项卡”。有些用户可能会选择在后台打开新选项卡的设置,这样主窗口就不会失去焦点,而且这种方法也不会起作用。(嘿,如果我还在看菜单,谁想关闭它?

    这是个好主意,但这种方法有一个小问题:至少在我的浏览器中,当你选择“在新选项卡中打开”时,它不会立即切换到该选项卡。因此,当用户单击新选项卡时,菜单会自动消失,直到它出现为止。如果这是最好的结果,那没关系,但如果有任何方法可以避免,那就太好了。最接近的方法是检测上下文菜单事件,而不是被点击的项目。这就是我害怕的;不过,感谢您的关注建议:)