HTMLElement: toggle 事件
Baseline 廣泛可用 *
HTMLElement 介面的 toggle 事件會在 popover 元素、<dialog> 元素或 <details> 元素顯示或隱藏後立即觸發。
- 如果元素正在從隱藏狀態轉變為顯示狀態,則
event.oldState屬性將被設定為closed,而event.newState屬性將被設定為open。 - 如果元素正在從顯示狀態轉變為隱藏狀態,則
event.oldState將是open,而event.newState將是closed。
此事件是 不可取消 的。
語法
在諸如 addEventListener() 之類的方法中使用事件名稱,或設定事件處理程式屬性。
js
addEventListener("toggle", (event) => { })
ontoggle = (event) => { }
事件型別
一個 ToggleEvent。繼承自 Event。
示例
下面的示例程式碼演示了 toggle 事件如何用於 popover。對於 <dialog> 或 <details> 元素,可以使用相同的程式碼以相同的方式進行處理。
基本示例
此示例演示瞭如何監聽 toggle 事件並記錄結果。
HTML
HTML 由一個 popover 和一個用於切換其開啟和關閉狀態的按鈕組成。
html
<button popovertarget="mypopover">Toggle the popover</button>
<div id="mypopover" popover>Popover content</div>
JavaScript
程式碼添加了一個 toggle 事件的事件監聽器,並記錄了狀態。
js
const popover = document.getElementById("mypopover");
popover.addEventListener("toggle", (event) => {
if (event.newState === "open") {
console.log("Popover has been shown");
} else {
console.log("Popover has been hidden");
}
});
結果
關於 toggle 事件合併的說明
如果在事件迴圈有機會迴圈之前觸發了多個 toggle 事件,則只會觸發一個事件。這被稱為“事件合併”。
例如
js
popover.addEventListener("toggle", () => {
// …
});
popover.showPopover();
popover.hidePopover();
// `toggle` only fires once
其他示例
HTMLDialogElement中的 開啟模態對話方塊 示例
規範
| 規範 |
|---|
| HTML # event-toggle |
瀏覽器相容性
載入中…
另見
popoverHTML 全域性屬性- Popover API
- 相關事件:
beforetoggle