是否存在浏览器上下文菜单的关闭事件

我正在使用jQuery捕获contextmenu事件,如下所示:

 $(document.body).on("contextmenu", function(e){ //do stuff here }); 

到现在为止还挺好。 现在我想在关闭时执行一些代码,但我似乎无法为此找到正确的解决方案。

使用类似下面的内容会捕获一些案例,但几乎不是全部:

 $(document.body).on("contextmenu click", function(e){}); 

在以下情况下不会执行:

  • 浏览器失去焦点
  • 选择上下文菜单中的选项
  • 用户单击浏览器中不在页面上的任何位置

注意:我没有使用jQuery上下文菜单,我只是用它来捕获事件。

以下代码可以帮助您。 的jsfiddle

 var isIntextMenuOpen ; $(document).on("contextmenu", function(e){ isIntextMenuOpen = true; }); function hideContextmenu(e){ if(isIntextMenuOpen ){ console.log("contextmenu closed "); } isIntextMenuOpen = false; } $(window).blur(hideContextmenu); $(document).click(hideContextmenu);