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