HTMLMediaElement: play() Methode
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
Die play()
-Methode des HTMLMediaElement
versucht die Wiedergabe der Medien zu starten. Sie gibt ein Promise
zurück, das aufgelöst wird, wenn die Wiedergabe erfolgreich gestartet wurde.
Wenn die Wiedergabe aus irgendeinem Grund, wie z. B. Berechtigungsproblemen, nicht gestartet werden kann, wird das Versprechen zurückgewiesen.
Syntax
play()
Parameter
Keine.
Rückgabewert
Ein Promise
, das aufgelöst wird, wenn die Wiedergabe begonnen hat, oder zurückgewiesen wird, wenn die Wiedergabe aus irgendeinem Grund nicht gestartet werden kann.
Hinweis:
Browser, die vor 2019 veröffentlicht wurden, geben möglicherweise keinen Wert von play()
zurück.
Ausnahmen
Der Rejection-Handler des Versprechens wird mit einem DOMException
-Objekt aufgerufen, das als einziger Eingabeparameter übergeben wird (im Gegensatz zu einer traditionellen Ausnahme, die ausgelöst wird). Mögliche Fehler sind:
NotAllowedError
DOMException
-
Wird bereitgestellt, wenn der Benutzeragent (Browser) oder das Betriebssystem die Wiedergabe von Medien im aktuellen Kontext oder in der aktuellen Situation nicht zulassen. Der Browser kann beispielsweise verlangen, dass der Benutzer die Medienwiedergabe ausdrücklich durch Klicken auf eine "Wiedergabe"-Schaltfläche startet, etwa aufgrund einer Berechtigungsrichtlinie.
NotSupportedError
DOMException
-
Wird bereitgestellt, wenn die Medienquelle (die möglicherweise als
MediaStream
,MediaSource
,Blob
oderFile
angegeben ist) kein unterstütztes Medienformat darstellt.
Andere Ausnahmen können gemeldet werden, abhängig von den Implementierungsdetails des Browsers, der Medienwiedergabefunktion und so weiter.
Verwendungshinweise
Obwohl der Begriff "Autoplay" normalerweise als Bezugnahme auf Seiten, die unmittelbar beim Laden mit der Wiedergabe von Medien beginnen, verstanden wird, gelten die Autoplay-Richtlinien der Webbrowser auch für die von Skripten initiierte Wiedergabe von Medien, einschließlich der Aufrufe von play()
.
Wenn der Benutzeragent so konfiguriert ist, dass er keine automatische oder von Skripten initiierte Wiedergabe von Medien zulässt, führt ein Aufruf von play()
dazu, dass das zurückgegebene Versprechen sofort mit einem NotAllowedError
zurückgewiesen wird. Websites sollten auf diese Situation vorbereitet sein. Beispielsweise sollte eine Website keine Benutzeroberfläche anzeigen, die davon ausgeht, dass die Wiedergabe automatisch begonnen hat, sondern stattdessen ihre Benutzeroberfläche basierend darauf aktualisieren, ob das zurückgegebene Versprechen erfüllt oder zurückgewiesen wird. Weitere Informationen finden Sie im Beispiel unten.
Hinweis:
Die play()
-Methode kann dazu führen, dass der Benutzer aufgefordert wird, die Erlaubnis zur Wiedergabe der Medien zu erteilen, was zu einer möglichen Verzögerung führt, bevor das zurückgegebene Versprechen aufgelöst wird. Stellen Sie sicher, dass Ihr Code nicht von einer sofortigen Antwort ausgeht.
Für noch detailliertere Informationen über Autoplay und Autoplay-Blockierung lesen Sie unseren Artikel Autoplay-Leitfaden für Media- und Web-Audio-APIs.
Beispiele
Bestätigung der Wiedergabe und Umgang mit Zuständen
Dieses Beispiel zeigt, wie Sie bestätigen können, dass die Wiedergabe begonnen hat, und wie Sie blockierte automatische Wiedergabe elegant handhaben.
Wenn dieses Beispiel ausgeführt wird, beginnt es damit, Referenzen zum <video>
-Element sowie zur <button>
-Schaltfläche zu sammeln, die zum Umschalten der Wiedergabe verwendet wird. Anschließend wird ein Ereignishandler für das click
-Ereignis auf der Umschalttaste eingerichtet und versucht automatisch mit der Wiedergabe zu beginnen, indem die async
playVideo()
-Funktion aufgerufen wird.
Eine Hilfsfunktion toggleButton()
lässt uns definieren, was im Code passieren soll, wenn wir ihr einen booleschen Wert übergeben, der den Wiedergabestatus darstellt (z. B. toggleButton(true)
). Wenn die Wiedergabe erfolgreich ist, ändern sich der Text der Schaltfläche und ihr aria-label
zu "Pause". Wenn die Wiedergabe fehlschlägt, zeigen die Schaltfläche und das aria-label
"Play" an. Dies stellt sicher, dass die playButton
mit dem Wiedergabestatus übereinstimmt, indem auf die Auflösung oder Zurückweisung des von play()
zurückgegebenen Promise
geachtet wird:
<div class="video-box">
<video
id="video"
width="480"
loop
src="/shared-assets/videos/flower.mp4"></video>
<button type="button" id="play-button" aria-label="Play"></button>
</div>
let videoElem = document.getElementById("video");
let playButton = document.getElementById("play-button");
playButton.addEventListener("click", handlePlayButton);
playVideo();
function toggleButton(playing) {
if (playing) {
playButton.textContent = "Pause";
playButton.setAttribute("aria-label", "Pause");
} else {
playButton.textContent = "Play";
playButton.setAttribute("aria-label", "Play");
}
}
async function playVideo() {
try {
await videoElem.play();
toggleButton(true);
} catch (err) {
toggleButton(false);
}
}
function handlePlayButton() {
if (videoElem.paused) {
playVideo();
} else {
videoElem.pause();
toggleButton(false);
}
}
Spezifikationen
Specification |
---|
HTML # dom-media-play-dev |
Browser-Kompatibilität
Loading…