HTMLElement: togglePopover() 方法
Baseline 2024 *
新推出
HTMLElement 接口的 togglePopover() 方法可以在隐藏和显示状态之间切换 popover 元素(即具有有效的 popover 属性的元素)。
当在带有 popover 属性的元素上调用 togglePopover() 时:
- 会触发一个
beforetoggle事件。 - Popover 在隐藏和显示之间切换。
- 如果最初是显示的,它将切换为隐藏。
- 如果最初是隐藏的,它将切换为显示。
- 会触发一个
toggle事件。
语法
togglePopover()
togglePopover(force)
togglePopover(options)
参数
一个布尔值 (force) 或一个 options 对象
force可选-
一个布尔值,它使
togglePopover()的行为类似于showPopover()或hidePopover(),不同之处在于,如果 popover 已经处于目标状态,它不会抛出异常。- 如果设置为
true,则会在 popover 最初隐藏时显示它。如果最初是显示的,则不执行任何操作。 - 如果设置为
false,则会在 popover 最初显示时将其隐藏。如果最初是隐藏的,则不执行任何操作。
- 如果设置为
options可选-
一个可能包含以下属性的对象:
force可选-
一个布尔值;请参阅上面的
force说明。 source可选-
一个
HTMLElement引用;以编程方式定义与切换操作关联的 popover 的调用者,即其控件元素。使用source选项建立 popover 及其调用者之间的关系有两个有益的效果:- 浏览器会将 popover 放置在显示时的键盘焦点导航顺序中的逻辑位置。这使得 popover 对键盘用户更加可访问(另请参阅 Popover 可访问性功能)。
- 浏览器在两者之间创建了一个隐式锚点引用,使得使用 CSS 锚点定位 来相对于其控件定位弹出窗口非常方便。有关更多详细信息,请参阅 弹出锚点定位。
返回值
如果调用后弹出窗口已打开,则为 true,否则为 false。
示例
请参阅 Popover API 示例登陆页,以访问 MDN popover 示例的完整集合。
简单的自动弹出
这是 Toggle Help UI Popover 示例 的一个略微修改的版本。该示例通过按键盘上的特定键(当示例窗口具有焦点时)来切换 popover 的打开和关闭。
下面显示了该示例的 HTML。第一个元素定义了如何调用弹出窗口的说明,这在我们这里是必需的,因为弹出窗口默认是隐藏的。
<p id="instructions">
Press "h" to toggle a help screen (select example window first).
</p>
然后我们定义一个 <div> 元素,它就是弹出窗口。实际内容无关紧要,但请注意,我们需要 popover 属性才能使 <div> 成为 popover,以便它默认隐藏(或者我们可以在 JavaScript 中设置此元素)。
<div id="mypopover" popover>
<h2>Help!</h2>
<p>You can use the following commands to control the app</p>
<ul>
<li>Press <ins>C</ins> to order cheese</li>
<li>Press <ins>T</ins> to order tofu</li>
<li>Press <ins>B</ins> to order bacon</li>
</ul>
</div>
下面显示了该示例的 JavaScript。首先,我们检查是否支持 popover,如果不支持,我们就隐藏 popover div,这样它就不会内联显示。
const instructions = document.getElementById("instructions");
const popover = document.getElementById("mypopover");
if (!Object.hasOwn(HTMLElement.prototype, "popover")) {
popover.innerText = "";
instructions.innerText = "Popovers not supported";
}
如果支持 popover,我们添加一个侦听器来处理按下的 h 键,并使用它来触发打开弹出窗口。我们还记录了调用后弹出窗口是打开还是关闭,但仅当返回 true 或 false 时。
if (Object.hasOwn(HTMLElement.prototype, "popover")) {
document.addEventListener("keydown", (event) => {
if (event.key === "h") {
const popupOpened = popover.togglePopover();
// Check if popover is opened or closed on supporting browsers
if (popupOpened !== undefined) {
instructions.innerText +=
popupOpened === true ? `\nOpened` : `\nClosed`;
}
}
});
}
您可以使用下面的实时示例进行测试。
规范
| 规范 |
|---|
| HTML # dom-togglepopover |
浏览器兼容性
加载中…
另见
popoverHTML 全局属性- Popover API