HTMLButtonElement: popoverTargetAction 属性
HTMLButtonElement 接口的 popoverTargetAction 属性用于获取和设置将要对由按钮控制的 popover 元素执行的操作("hide"、"show" 或 "toggle")。
它反映了 popovertargetaction HTML 属性的值。
值
这是一个枚举值。可能的值有:
示例
通过自动 popover 切换 popover 操作
此示例展示了 popover API 的基本用法,其中 popoverTargetAction 属性设置为 "toggle" 值。popover 属性设置为 "auto",因此可以通过单击 popover 区域外部来关闭 popover(“轻量级关闭”)。
首先,我们定义一个 <button> 元素,它将用于显示和隐藏 popover,以及一个 <div> 元素,它将作为 popover。在此示例中,我们不在 <button> 上设置 popovertargetaction HTML 属性,也不在 <div> 上设置 popover 属性,因为我们将通过编程方式进行设置。
<button id="toggleBtn">Toggle popover</button>
<div id="mypopover">This is popover content!</div>
JavaScript 代码首先获取对 <div> 和 <button> 元素的引用。然后定义一个函数来检查 popover 支持情况。
const popover = document.getElementById("mypopover");
const toggleBtn = document.getElementById("toggleBtn");
// Check for popover API support.
function supportsPopover() {
return Object.hasOwn(HTMLElement.prototype, "popover");
}
如果支持 popover API,代码会将 <div> 元素的 popover 属性设置为 "auto",并使其成为切换按钮的目标 popover。然后我们将 <button> 的 popoverTargetAction 设置为 "toggle"。如果不支持 popover API,我们将更改 <div> 元素的文本内容以声明此情况,并隐藏切换按钮。
if (supportsPopover()) {
// Set the <div> element to be an auto popover
popover.popover = "auto";
// Set the button popover target to be the popover
toggleBtn.popoverTargetElement = popover;
// Set that the button toggles popover visibility
toggleBtn.popoverTargetAction = "toggle";
} else {
popover.textContent = "Popover API not supported.";
toggleBtn.hidden = true;
}
注意: popover 元素默认是隐藏的,但如果 API 不受支持,您的元素将“按原样”显示。
您可以尝试下面的示例。通过切换按钮来显示和隐藏 popover。"auto" popover 也可以通过在 popover 文本范围外部选择来“轻量级关闭”。
使用手动 popover 显示/隐藏 popover 操作
此示例展示了如何使用 popoverTargetAction 属性的 "show" 和 "hide" 值。
代码与上一个示例几乎相同,不同之处在于有两个 <button> 元素,并且 popover 设置为 "manual"。manual popover 必须显式关闭,并且不能通过在 popover 区域外部选择来“轻量级关闭”。
<button id="showBtn">Show popover</button>
<button id="hideBtn">Hide popover</button>
<div id="mypopover">This is popover content!</div>
function supportsPopover() {
return Object.hasOwn(HTMLElement.prototype, "popover");
}
const popover = document.getElementById("mypopover");
const showBtn = document.getElementById("showBtn");
const hideBtn = document.getElementById("hideBtn");
const popoverSupported = supportsPopover();
if (supportsPopover()) {
// Set the <div> element be a manual popover
popover.popover = "manual";
// Set the button targets to be the popover
showBtn.popoverTargetElement = popover;
hideBtn.popoverTargetElement = popover;
// Set the target actions to be show/hide
showBtn.popoverTargetAction = "show";
hideBtn.popoverTargetAction = "hide";
} else {
popover.textContent = "Popover API not supported.";
showBtn.hidden = true;
hideBtn.hidden = true;
}
通过选择“显示 popover”按钮可以显示 popover,使用“隐藏 popover”按钮可以关闭 popover。
规范
| 规范 |
|---|
| HTML # dom-popovertargetaction |
浏览器兼容性
加载中…