HTMLInputElement:popoverTargetAction 属性
popoverTargetAction
属性是 HTMLInputElement
接口的一部分,用于获取和设置对由 type="button"
的 <input>
元素控制的弹出窗口元素执行的操作("hide"
、"show"
或 "toggle"
)。
它反映了 popovertargetaction
HTML 属性的值。
值
示例
使用自动弹出窗口切换弹出窗口操作
此示例演示了使用 popoverTargetAction
属性设置为“toggle”值的弹出窗口 API 的基本用法。popover
属性设置为 "auto"
,因此可以通过单击弹出窗口区域外部关闭(“轻量级关闭”)弹出窗口。
首先,我们定义一个 type="button"
的 <input>
,我们将使用它来显示和隐藏弹出窗口,以及一个将作为弹出窗口的 <div>
。在本例中,我们不会在按钮上设置 popovertargetaction
HTML 属性,也不会在 <div>
上设置 popover
属性,因为我们将以编程方式进行操作。
<input id="toggleBtn" type="button" value="Toggle popover" />
<div id="mypopover">This is popover content!</div>
JavaScript 代码首先获取 <div>
和 <input>
元素的句柄。然后,它定义一个函数来检查弹出窗口支持。
const popover = document.getElementById("mypopover");
const toggleBtn = document.getElementById("toggleBtn");
// Check for popover API support.
function supportsPopover() {
return HTMLElement.prototype.hasOwnProperty("popover");
}
如果支持弹出窗口 API,则代码将 <div>
元素的 popover
属性设置为 "auto"
,并将其设为切换按钮的弹出窗口目标。然后,我们将按钮的 popoverTargetAction
设置为 "toggle"
。如果不支持弹出窗口 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;
}
注意: 弹出窗口元素默认情况下处于隐藏状态,但如果 API 不受支持,则您的元素将“照常”显示。
您可以尝试以下示例。通过切换按钮来显示和隐藏弹出窗口。还可以通过选择弹出窗口文本边界之外的区域来关闭“自动”弹出窗口。
使用手动弹出窗口显示/隐藏弹出窗口操作
此示例演示如何使用 popoverTargetAction
属性的 "show"
和 "hide"
值。
代码与前面的示例几乎相同,只是有两个 <button>
元素,并且弹出窗口设置为 "manual"
。必须显式关闭手动弹出窗口,并且不会通过选择弹出窗口区域之外的区域来“轻量级关闭”。
<input id="showBtn" type="button" value="Show popover" />
<input id="hideBtn" type="button" value="Hide popover" />
<div id="mypopover">This is popover content!</div>
function supportsPopover() {
return HTMLElement.prototype.hasOwnProperty("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;
}
可以通过选择“显示弹出窗口”按钮来显示弹出窗口,并使用“隐藏弹出窗口”按钮将其关闭。
规范
规范 |
---|
HTML 标准 # dom-popovertargetaction |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。
另请参阅
popover
HTML 全局属性- Popover API