DOM

インターフェイス

Element:contextmenu イベント

 編集:2022.09.27 by T.A.

[Edge]。→mdnmdn(en-US)

ユーザーがコンテキスト メニューを開こうとしたときに発行されます。このイベントは、通常、マウスの右ボタンをクリックするか、コンテキスト メニュー キーを押すことで発行されます。

後者の場合、コンテキストメニューは、フォーカスされた要素の左下に表示されます。ただし、要素がツリーの場合は、現在の行の左下に表示されます。

右クリックイベントが(イベントの Event.preventDefault() メソッドを呼び出して)無効化されていない場合は、対象となる要素で contextmenu イベントが発行されます。

バブリング あり
キャンセル 可能
インターフェイス MouseEvent
イベント ハンドラー プロパティ oncontextmenu
mdnより

この例では、最初の段落で contextmenu イベントが発行されたときに、preventDefault() を使って contextmenu イベントの既定のアクションをキャンセルしています。その結果、第 1 段落は右クリックしても何も起こらず、第 2 段落にはブラウザーが提供する標準的なコンテキスト メニューが表示されることになります。

HTML:

<p id="noContextMenu">この段落ではコンテキストメニューが無効になっています。</p>
<p>しかし、この段落では無効になっていません。</p>

JavaScript:

const noContext = document.getElementById('noContextMenu');

noContext.addEventListener('contextmenu', e => {
  e.preventDefault();
});

HTML:

<SPAN id=IdTest>[SPAN要素。ここでマウスを操作してください…<B>[B要素]</B>テキスト<INPUT value="INPUT要素">]</SPAN><BR>
<SPAN id=IdLog></SPAN><BR>

JavaScript:

function Job(eve){ //contextmenuイベントの処理:
  D=eve; //=[object]:[object PointerEvent]
詳細 //isTrusted=[boolean]:true //pointerId=[number]:1 //width=[number]:1 //height=[number]:1 //pressure=[number]:0 //tiltX=[number]:0 //tiltY=[number]:0 //azimuthAngle=[number]:0 //altitudeAngle=[number]:1.5707963267948966 //tangentialPressure=[number]:0 //twist=[number]:0 //pointerType=[string]:mouse //isPrimary=[boolean]:false //getCoalescedEvents=[function]:function getCoalescedEvents() { [native code] } //getPredictedEvents=[function]:function getPredictedEvents() { [native code] } //screenX=[number]:547 //screenY=[number]:323 //clientX=[number]:340 //clientY=[number]:248 //ctrlKey=[boolean]:false //shiftKey=[boolean]:false //altKey=[boolean]:false //metaKey=[boolean]:false //button=[number]:2 //buttons=[number]:0 //relatedTarget=[object]:null //pageX=[number]:340 //pageY=[number]:1708 //x=[number]:340 //y=[number]:248 //offsetX=[number]:322 //offsetY=[number]:31 //movementX=[number]:0 //movementY=[number]:0 //fromElement=[object]:null //toElement=[object]:null //layerX=[number]:340 //layerY=[number]:1708 //getModifierState=[function]:function getModifierState() { [native code] } //initMouseEvent=[function]:function initMouseEvent() { [native code] } //view=[object]:[object Window] //detail=[number]:0 //sourceCapabilities=[object]:[object InputDeviceCapabilities] //which=[number]:3 //initUIEvent=[function]:function initUIEvent() { [native code] } //type=[string]:contextmenu //…
// eve.preventDefault(); let E=eve.target; IdLog.innerHTML=E.tagName +":pageX:"+ eve.pageX +"、pageY:"+ eve.pageY +"、button:"+ eve.button; } IdTest.oncontextmenu=Job;

テスト
HTML:


ここにHTMLが表示される
スクリプト組み込み:
JavaScript:


JavaScript:



表示内容:
表示内容: