15

contextmenu次のようにjQueryを使用してイベントをキャッチしています:

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

ここまでは順調ですね。閉じたときにいくつかのコードを実行したいのですが、これに対する正しい解決策が見つからないようです。

次のようなものを使用すると、いくつかのケースがキャッチされますが、ほとんどすべてではありません。

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

次の場合は実行されません。

  • ブラウザがフォーカスを失う
  • コンテキストメニューのオプションが選択されています
  • ユーザーがブラウザ内のページ以外の場所をクリックした

注: jQuery コンテキスト メニューは使用していません。イベントをキャッチするために使用しているだけです。

4

2 に答える 2

9

次のコードが役立つ場合があります。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);
于 2012-10-09T14:12:32.180 に答える