Picture-in-Picture API
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Die Bild-in-Bild-API ermöglicht es Websites, ein schwebendes, immer im Vordergrund befindliches Videofenster zu erstellen. Dies erlaubt es den Nutzern, Medien weiter zu konsumieren, während sie mit anderen Websites oder Anwendungen auf ihrem Gerät interagieren.
Hinweis: Die Document Picture-in-Picture API erweitert die Bild-in-Bild-API, um das immer im Vordergrund befindliche Fenster mit beliebigem HTML-Inhalt zu füllen, nicht nur mit einem Video.
Schnittstellen
PictureInPictureWindow
-
Repräsentiert das schwebende Videofenster; enthält die Eigenschaften
width
undheight
sowie eineonresize
-Ereignisbehandlungseigenschaft. PictureInPictureEvent
-
Repräsentiert ereignisbezogene Bild-in-Bild-Ereignisse, einschließlich
enterpictureinpicture
,leavepictureinpicture
undresize
.
Instanzmethoden
Die Bild-in-Bild-API fügt den Schnittstellen HTMLVideoElement
und Document
Methoden hinzu, um das schwebende Videofenster ein- und auszuschalten.
Instanzmethoden auf der HTMLVideoElement-Schnittstelle
HTMLVideoElement.requestPictureInPicture()
-
Fordert an, dass der Benutzeragent das Video in den Bild-in-Bild-Modus versetzt.
Instanzmethoden auf der Document-Schnittstelle
Document.exitPictureInPicture()
-
Fordert an, dass der Benutzeragent das Element im Bild-in-Bild-Modus zurück in seine ursprüngliche Box bringt.
Instanzeigenschaften
Die Bild-in-Bild-API erweitert die Schnittstellen HTMLVideoElement
, Document
und ShadowRoot
um Eigenschaften, die dazu verwendet werden können, um zu bestimmen, ob der schwebende Videofenstermodus unterstützt und verfügbar ist, ob der Bild-in-Bild-Modus momentan aktiv ist und welches Video schwebt.
Instanzeigenschaften auf der HTMLVideoElement-Schnittstelle
HTMLVideoElement.disablePictureInPicture
-
Die
disablePictureInPicture
-Eigenschaft gibt dem Benutzeragent einen Hinweis, das Bild-in-Bild nicht den Benutzern vorzuschlagen oder es automatisch anzufordern.
Instanzeigenschaften auf der Document-Schnittstelle
Document.pictureInPictureEnabled
-
Die
pictureInPictureEnabled
-Eigenschaft gibt an, ob es möglich ist, den Bild-in-Bild-Modus zu aktivieren oder nicht. Dies istfalse
, wenn der Bild-in-Bild-Modus aus irgendeinem Grund nicht verfügbar ist (z.B. wurde die"picture-in-picture"
-Funktion untersagt oder der Bild-in-Bild-Modus wird nicht unterstützt).
Instanzeigenschaften auf den Document- oder ShadowRoot-Schnittstellen
Document.pictureInPictureElement
/ShadowRoot.pictureInPictureElement
-
Die
pictureInPictureElement
-Eigenschaft gibt an, welchesElement
derzeit im schwebenden Fenster (oder im Shadow-DOM) angezeigt wird. Ist dieser Wertnull
, gibt es im Dokument (oder im Shadow-DOM) keinen Knoten im Bild-in-Bild-Modus.
Ereignisse
Die Bild-in-Bild-API definiert drei Ereignisse, die verwendet werden können, um zu erkennen, wann der Bild-in-Bild-Modus umgeschaltet wird und wann das schwebende Videofenster die Größe ändert.
enterpictureinpicture
-
Wird an ein
HTMLVideoElement
gesendet, wenn es in den Bild-in-Bild-Modus wechselt. leavepictureinpicture
-
Wird an ein
HTMLVideoElement
gesendet, wenn es den Bild-in-Bild-Modus verlässt. resize
-
Wird an ein
PictureInPictureWindow
gesendet, wenn es die Größe ändert.
Steuerung hinzufügen
Wenn Medienaktionshandler über die Media Session API festgelegt wurden, dann fügt der Browser geeignete Steuerelemente für diese Aktionen dem Bild-in-Bild-Overlay hinzu. Zum Beispiel, wenn eine "nexttrack"
-Aktion festgelegt wurde, könnte im Bild-in-Bild-Ansicht eine Schaltfläche zum Überspringen angezeigt werden. Es gibt keine Unterstützung für das Hinzufügen von benutzerdefinierten HTML-Schaltflächen oder -Steuerelementen.
Styling steuern
Die :picture-in-picture
CSS Pseudo-Klasse passt das Videoelement an, das aktuell im Bild-in-Bild-Modus ist, und ermöglicht es Ihnen, Ihre Stylesheets so zu konfigurieren, dass sie automatisch die Größe, den Stil oder das Layout von Inhalten anpassen, wenn ein Video zwischen Bild-in-Bild- und traditionellem Präsentationsmodus wechselt.
Zugriff steuern
Die Verfügbarkeit des Bild-in-Bild-Modus kann mit Permissions Policy gesteuert werden. Die Bild-in-Bild-Modus-Funktion wird durch den String "picture-in-picture"
identifiziert, mit einem Standarderlaubniswert von *
, was bedeutet, dass der Bild-in-Bild-Modus sowohl im obersten Dokumentkontext als auch in verschachtelten Browsing-Kontexten erlaubt ist, die aus derselben Herkunft wie das oberste Dokument geladen werden.
Beispiele
In diesem Beispiel wird ein Video auf einer Webseite präsentiert. Durch Klicken auf die Schaltfläche unten kann der Benutzer das schwebende Videofenster umschalten.
Umschalten des Bild-in-Bild-Modus
Dieser Code wird von einem Klick-Handler aufgerufen, wenn der Benutzer auf die Schaltfläche "Bild-in-Bild umschalten" klickt:
function togglePictureInPicture() {
if (document.pictureInPictureElement) {
document.exitPictureInPicture();
} else if (document.pictureInPictureEnabled) {
video.requestPictureInPicture();
}
}
Dieser Block beginnt damit, den Wert des Attributs pictureInPictureElement
des document
zu überprüfen.
Wenn der Wert nicht null
ist, ist es das Element, das sich derzeit im Bild-in-Bild-Modus befindet, also in einem schwebenden Fenster. Wir rufen document.exitPictureInPicture()
auf, um das Video in seine ursprüngliche Box zurückzubringen.
Wenn der Wert null
ist, befindet sich kein Video im schwebenden Fenster. Daher können wir ein Video anfordern, in den Bild-in-Bild-Modus zu wechseln. Dies tun wir, indem wir HTMLVideoElement.requestPictureInPicture()
auf das <video>
-Element aufrufen.
Spezifikationen
Specification |
---|
Picture-in-Picture # interface-picture-in-picture-window |