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

red*_*d-X 12 javascript jquery contextmenu javascript-events

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

$(document.body).on("contextmenu", function(e){
    //do stuff here
});
Run Code Online (Sandbox Code Playgroud)

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

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

$(document.body).on("contextmenu click", function(e){});
Run Code Online (Sandbox Code Playgroud)

在以下情况下不会执行:

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

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

Ano*_*oop 6

以下代码可以帮助您.的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);
Run Code Online (Sandbox Code Playgroud)

  • 在桌面Chrome 53上,当上下文菜单打开时,"mousemove"事件不会触发,并且当一个关闭时立即触发,因此将"$(window).mousemove(hideContextMenu)"添加到工具库中,应该触发hideContextMenu在每种情况下. (4认同)