HTMLButtonElement: popoverTargetAction-Eigenschaft

Baseline 2024
Newly available

Since April 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

Die popoverTargetAction-Eigenschaft des HTMLButtonElement-Interfaces ruft die Aktion ab, die auf einem von einem Button gesteuerten Popover-Element ausgeführt werden soll, und legt diese fest ("hide", "show" oder "toggle").

Sie spiegelt den Wert des popovertargetaction HTML-Attributs wider.

Wert

Ein enumerierter Wert. Mögliche Werte sind:

"hide"

Der Button wird ein angezeigtes Popover ausblenden. Wenn Sie versuchen, ein bereits ausgeblendetes Popover auszublenden, wird keine Aktion ausgeführt.

"show"

Der Button wird ein ausgeblendetes Popover anzeigen. Wenn Sie versuchen, ein bereits angezeigtes Popover anzuzeigen, wird keine Aktion ausgeführt.

"toggle"

Der Button wird ein Popover zwischen ein- und ausgeblendet umschalten. Wenn das Popover ausgeblendet ist, wird es angezeigt; wenn das Popover angezeigt wird, wird es ausgeblendet. Wenn popoverTargetAction nicht gesetzt ist, ist "toggle" die Standardaktion, die vom Steuerbutton ausgeführt wird.

Beispiele

Umschalten der Popover-Aktion mit einem automatischen Popover

Dieses Beispiel zeigt die grundlegende Verwendung der Popover-API mit einem "toggle"-Wert, der für die popoverTargetAction-Eigenschaft festgelegt ist. Das popover-Attribut ist auf "auto" gesetzt, sodass das Popover durch Klicken außerhalb des Popover-Bereichs geschlossen ("light-dismissed") werden kann.

Zuerst definieren wir ein HTML-<button>-Element, das wir zum Anzeigen und Ausblenden des Popovers verwenden werden, und ein <div>, das das Popover sein wird. In diesem Fall setzen wir das popovertargetaction HTML-Attribut auf dem <button> oder das popover Attribut auf dem <div> nicht, da wir dies programmatisch tun werden.

html
<button id="toggleBtn">Toggle popover</button>
<div id="mypopover">This is popover content!</div>

Der JavaScript-Code erhält zuerst eine Referenz zu den <div>- und <button>-Elementen. Anschließend wird eine Funktion definiert, um die Unterstützung für Popover zu überprüfen.

js
const popover = document.getElementById("mypopover");
const toggleBtn = document.getElementById("toggleBtn");

// Check for popover API support.
function supportsPopover() {
  return Object.hasOwn(HTMLElement.prototype, "popover");
}

Wenn die Popover-API unterstützt wird, setzt der Code das popover-Attribut des <div>-Elements auf "auto" und macht es zum Popover-Ziel des Umschalt-Buttons. Dann setzen wir die popoverTargetAction des <button> auf "toggle". Wenn die Popover-API nicht unterstützt wird, ändern wir den Textinhalt des <div>-Elements, um dies anzugeben, und blenden den Umschaltbutton aus.

js
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;
}

Hinweis: Ein Popover-Element ist standardmäßig ausgeblendet, aber wenn die API nicht unterstützt wird, wird Ihr Element "wie üblich" angezeigt.

Sie können das folgende Beispiel ausprobieren. Zeigen und verbergen Sie das Popover, indem Sie den Button umschalten. Das "auto" Popover kann auch durch Auswahl außerhalb der Grenzen des Popover-Texts "light dismissed" werden.

Zeigen/Verbergen der Popover-Aktion mit einem manuellen Popover

Dieses Beispiel zeigt, wie man die "show" und "hide" Werte des popoverTargetAction-Attributs verwendet.

Der Code ist fast identisch mit dem vorherigen Beispiel, außer dass es zwei <button>-Elemente gibt und das Popover auf "manual" gesetzt ist. Ein manuelles Popover muss explizit geschlossen werden und kann nicht durch Auswahl außerhalb des Popover-Bereichs "light-dismissed" werden.

html
<button id="showBtn">Show popover</button>
<button id="hideBtn">Hide popover</button>
<div id="mypopover">This is popover content!</div>
js
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;
}

Das Popover kann angezeigt werden, indem der "Show popover"-Button ausgewählt wird und mit dem "Hide popover"-Button geschlossen wird.

Spezifikationen

Specification
HTML
# dom-popovertargetaction

Browser-Kompatibilität

Siehe auch