Element: contextmenu 事件

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

當用戶嘗試開啟上下文選單時,會觸發 contextmenu 事件。此事件通常由點選滑鼠右鍵或按下上下文選單鍵觸發。

在後一種情況下,上下文選單會顯示在獲得焦點的元素的左下方,除非該元素是樹,在這種情況下,上下文選單會顯示在當前行的左下方。

任何未被停用(透過呼叫點選事件的 preventDefault() 方法)的右鍵點選事件都會導致在目標元素上觸發一個 contextmenu 事件。

注意: Firefox 中有一個例外:如果使用者在右鍵點選時按住 Shift 鍵,則會顯示上下文選單,而不會觸發 contextmenu 事件。

語法

在諸如 addEventListener() 之類的方法中使用事件名稱,或設定事件處理程式屬性。

js
addEventListener("contextmenu", (event) => { })

oncontextmenu = (event) => { }

事件型別

一個 PointerEvent。繼承自 MouseEvent

Event UIEvent MouseEvent PointerEvent

注意: 在規範的早期版本中,此事件的事件型別是 MouseEvent。有關更多資訊,請檢視瀏覽器相容性

事件屬性

此介面繼承自 MouseEventEvent 的屬性。

PointerEvent.altitudeAngle 只讀 實驗性

表示感測器(指標或手寫筆)軸與裝置螢幕的 X-Y 平面之間的角度。

PointerEvent.azimuthAngle 只讀 實驗性

表示 Y-Z 平面與包含感測器(指標或手寫筆)軸和 Y 軸的平面之間的角度。

PointerEvent.pointerId 只讀

導致事件的指標的唯一識別符號。

PointerEvent.width 只讀

指標接觸幾何的寬度(X 軸上的大小),以 CSS 畫素為單位。

PointerEvent.height 只讀

指標接觸幾何的高度(Y 軸上的大小),單位為 CSS 畫素。

PointerEvent.pressure 只讀

指標輸入在 01 範圍內的歸一化壓力,其中 01 分別表示硬體能夠檢測到的最小和最大壓力。

PointerEvent.tangentialPressure 只讀

指標輸入(也稱為筒壓或圓柱應力)在 -11 範圍內的歸一化切向壓力,其中 0 是控制的中間位置。

PointerEvent.tiltX 只讀

Y-Z 平面與包含指標(例如筆手寫筆)軸和 Y 軸的平面之間的平面角(以度為單位,範圍為 -9090)。

PointerEvent.tiltY 只讀

X–Z 平面與包含指標(例如,筆尖)軸和 X 軸的平面之間的平面角度(以度為單位,範圍為 -9090)。

PointerEvent.twist 只讀

指標(例如筆手寫筆)圍繞其主軸的順時針旋轉角度,以度為單位,值為 0359

PointerEvent.pointerType 只讀

指示導致事件的裝置型別(滑鼠、筆、觸控等)。

PointerEvent.isPrimary 只讀

指示此指標是否表示此指標型別的主要指標。

示例

取消 contextmenu 事件

在此示例中,當在第一個段落上觸發 contextmenu 事件時,使用 preventDefault() 取消了 contextmenu 事件的預設操作。因此,右鍵點選第一個段落時將不執行任何操作,而第二個段落將顯示瀏覽器提供的標準上下文選單。

注意: 在 Firefox 中,如果您在右鍵點選時按住 Shift 鍵,則會顯示上下文選單而不會觸發 contextmenu 事件。因此,取消該事件並不能阻止顯示上下文選單。

HTML

html
<p id="noContextMenu">The context menu has been disabled on this paragraph.</p>
<p>But it has not been disabled on this one.</p>

JavaScript

js
const noContext = document.getElementById("noContextMenu");

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

結果

規範

規範
UI 事件
# event-type-contextmenu

瀏覽器相容性

另見