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 July 2015.
Die play()
-Methode des HTMLMediaElement
versucht, die Wiedergabe des Mediums zu starten. Sie gibt ein Promise
zurück, das aufgelöst wird, wenn die Wiedergabe erfolgreich gestartet wurde.
Wenn aus irgendeinem Grund, wie beispielsweise Berechtigungsprobleme, die Wiedergabe nicht gestartet werden kann, wird das Promise abgelehnt.
Syntax
play()
Parameter
Keine.
Rückgabewert
Ein Promise
, das aufgelöst wird, wenn die Wiedergabe gestartet wurde oder abgelehnt wird, falls 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 Promises wird mit einem DOMException
-Objekt aufgerufen, das als einziger Eingabeparameter übergeben wird (im Gegensatz zu einer traditionellen Ausnahme, die geworfen wird). Mögliche Fehler sind:
NotAllowedError
DOMException
-
Wird bereitgestellt, wenn der User-Agent (Browser) oder das Betriebssystem die Wiedergabe des Mediums im aktuellen Kontext oder in der aktuellen Situation nicht zulässt. Der Browser kann erfordern, dass der Benutzer die Medienwiedergabe ausdrücklich durch Klicken auf eine "Play"-Schaltfläche startet, beispielsweise aufgrund einer Permissions Policy.
NotSupportedError
DOMException
-
Wird bereitgestellt, wenn die Medienquelle (die beispielsweise als
MediaStream
,MediaSource
,Blob
oderFile
angegeben werden kann) kein unterstütztes Medienformat darstellt.
Andere Ausnahmen können gemeldet werden, abhängig von den Implementierungsdetails des Browsers, der Implementierung des Mediaplayers und so weiter.
Hinweise zur Verwendung
Obwohl der Begriff "Autoplay" gewöhnlich als Bezeichner für Seiten verstanden wird, die unmittelbar nach dem Laden des Mediums mit der Wiedergabe beginnen, gelten die Autoplay-Richtlinien der Webbrowser auch für jede skriptinitiierte Wiedergabe von Medien, einschließlich Aufrufen von play()
.
Wenn der Benutzeragent so konfiguriert ist, dass er keine automatische oder skriptinitiierte Wiedergabe von Medien erlaubt, wird durch Aufrufen von play()
das zurückgegebene Promise sofort mit einem NotAllowedError
abgelehnt. Webseiten sollten darauf vorbereitet sein, mit dieser Situation umzugehen. Beispielsweise sollte eine Seite keine Benutzeroberfläche präsentieren, die davon ausgeht, dass die Wiedergabe automatisch begonnen hat, sondern stattdessen ihre Benutzeroberfläche basierend darauf aktualisieren, ob das zurückgegebene Promise erfüllt oder abgelehnt wurde. Siehe das Beispiel unten für weitere Informationen.
Hinweis:
Die play()
-Methode kann dazu führen, dass der Benutzer um die Erlaubnis zur Wiedergabe des Mediums gebeten wird, was zu einer möglichen Verzögerung führen kann, bevor das zurückgegebene Promise aufgelöst wird. Stellen Sie sicher, dass Ihr Code keine sofortige Antwort erwartet.
Für noch tiefere Einblicke in Autoplay und die Blockierung von Autoplay, siehe unseren Artikel Autoplay-Leitfaden für Medien- und Web-Audio-APIs.
Beispiele
Bestätigung der Wiedergabe und Handhabung von Zuständen
Dieses Beispiel zeigt, wie man bestätigt, dass die Wiedergabe begonnen hat, und wie man blockierte automatische Wiedergabe elegant behandelt.
Wenn dieses Beispiel ausgeführt wird, beginnt es damit, Referenzen zu dem <video>
-Element sowie zu dem <button>
zu sammeln, das verwendet wird, um die Wiedergabe ein- und auszuschalten. Es richtet dann einen Event-Handler für das click
-Ereignis auf der Umschalttaste ein und versucht, die Wiedergabe automatisch zu starten, indem die async
playVideo()
-Funktion aufgerufen wird.
Eine Hilfsfunktion toggleButton()
lässt uns definieren, was im Code geschehen soll, wenn wir ihr einen booleschen Wert übergeben, der den Wiedergabestatus darstellt (z.B. toggleButton(true)
). Wenn die Wiedergabe erfolgreich ist, ändern sich der Schaltflächen-Text und das aria-label
in "Pause". Wenn die Wiedergabe fehlschlägt, zeigt die Schaltfläche und aria-label
"Play" an. Dies stellt sicher, dass die playButton
mit dem Wiedergabestatus übereinstimmt, indem es auf die Auflösung oder Ablehnung des von play()
zurückgegebenen Promise
achtet:
<div class="video-box">
<video
id="video"
width="480"
loop
src="https://developer.mozilla.org/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, false);
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 |