web-dev-qa-db-ja.com

JavaScriptで右クリックイベントをキャプチャする方法を教えてください。

標準のコンテキストメニューをブロックして、右クリックイベントを手動で処理します。

これはどのように行われますか?

206
Giffyguy

oncontextmenuイベントを使用してください。

これが例です:

<div oncontextmenu="javascript:alert('success!');return false;">
    Lorem Ipsum
</div>

そしてイベントリスナーを使う:

el.addEventListener('contextmenu', function(ev) {
    ev.preventDefault();
    alert('success!');
    return false;
}, false);

Falseを返すことを忘れないでください。そうしないと、標準のコンテキストメニューが依然としてポップアップ表示されます。

あなたがjavascript:alert("Success!")ではなくあなたが書いた関数を使うつもりなら、関数とoncontextmenu属性の両方でfalseを返すことを忘れないでください。

295
Chase

私はあなたがこのようなものを探していると思います:

   function rightclick() {
    var rightclick;
    var e = window.event;
    if (e.which) rightclick = (e.which == 3);
    else if (e.button) rightclick = (e.button == 2);
    alert(rightclick); // true or false, you can trap right click here by if comparison
}

http://www.quirksmode.org/js/events_properties.html

それから、関数rightclick()を使ってもonmousedownを使います(ページ全体でグローバルに使いたい場合は、<body onmousedown=rightclick(); >を使えます。

29
cyber-guard