HTTP/2 301
content-length: 162
content-type: text/html
date: Wed, 15 Oct 2025 18:55:43 GMT
location: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/readyState
server: nginx
strict-transport-security: max-age=60; includeSubDomains
via: 1.1 google
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
HTTP/2 200
content-type: text/html
x-guploader-uploadid: AAwnv3Lo3uLrBp1dcvCCN5LuTUSUwhHORtfZS1tBGYau8dfiUvd7SeYswz9nAJy5Nzic-EM3
cache-control: public, max-age=3600
expires: Wed, 15 Oct 2025 19:55:44 GMT
last-modified: Wed, 15 Oct 2025 09:08:59 GMT
etag: W/"3ae6a4d3c49dbc646b21b21aa5384bfd"
x-goog-generation: 1760519339328694
x-goog-metageneration: 1
x-goog-stored-content-encoding: identity
x-goog-stored-content-length: 152414
x-goog-meta-goog-reserved-file-mtime: 1760517815
x-goog-hash: crc32c=FzxPqQ==, md5=Ouak08SdvGRrIbIapThL/Q==
x-goog-storage-class: STANDARD
accept-ranges: none
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
alt-svc: clear
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
strict-transport-security: max-age=63072000
content-security-policy: default-src 'self'; script-src 'report-sample' 'self' 'wasm-unsafe-eval' https://www.google-analytics.com/analytics.js https://www.googletagmanager.com/gtag/js assets.codepen.io production-assets.codepen.io https://js.stripe.com 'sha256-XNBp89FG76amD8BqrJzyflxOF9PaWPqPqvJfKZPCv7M=' 'sha256-YCNoU9DNiinACbd8n6UPyB/8vj0kXvhkOni9/06SuYw=' 'sha256-PZjP7OR6mBEtnvXIZfCZ5PuOlxoDF1LDZL8aj8c42rw='; script-src-elem 'report-sample' 'self' 'wasm-unsafe-eval' https://www.google-analytics.com/analytics.js https://www.googletagmanager.com/gtag/js assets.codepen.io production-assets.codepen.io https://js.stripe.com 'sha256-XNBp89FG76amD8BqrJzyflxOF9PaWPqPqvJfKZPCv7M=' 'sha256-YCNoU9DNiinACbd8n6UPyB/8vj0kXvhkOni9/06SuYw=' 'sha256-PZjP7OR6mBEtnvXIZfCZ5PuOlxoDF1LDZL8aj8c42rw='; style-src 'report-sample' 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self'; connect-src 'self' developer.allizom.org bcd.developer.allizom.org bcd.developer.mozilla.org updates.developer.allizom.org updates.developer.mozilla.org https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com https://incoming.telemetry.mozilla.org https://observatory-api.mdn.allizom.net https://observatory-api.mdn.mozilla.net https://api.github.com/search/issues stats.g.doubleclick.net https://api.stripe.com; font-src 'self'; frame-src 'self' interactive-examples.mdn.mozilla.net interactive-examples.mdn.allizom.net mdn.github.io live-samples.mdn.mozilla.net live-samples.mdn.allizom.net *.mdnplay.dev *.mdnyalp.dev *.play.test.mdn.allizom.net https://v2.scrimba.com https://scrimba.com jsfiddle.net www.youtube-nocookie.com codepen.io survey.alchemer.com https://js.stripe.com; img-src 'self' data: *.githubusercontent.com *.googleusercontent.com *.gravatar.com mozillausercontent.com firefoxusercontent.com profile.stage.mozaws.net profile.accounts.firefox.com developer.mozilla.org mdn.dev interactive-examples.mdn.mozilla.net interactive-examples.mdn.allizom.net wikipedia.org upload.wikimedia.org https://mdn.github.io/shared-assets/ https://mdn.dev/ https://*.google-analytics.com https://*.googletagmanager.com www.gstatic.com; manifest-src 'self'; media-src 'self' archive.org videos.cdn.mozilla.net https://mdn.github.io/shared-assets/; child-src 'self'; worker-src 'self';
x-frame-options: DENY
origin-trial: AxVILwizhbMjxFeHOn1P3R8niO1RJY/smaK4B4d1rLzc1gTaxtXMSaTi+FoigYgCw40uFRDwFcEAeqDR+vVLOW4AAABfeyJvcmlnaW4iOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZyIsImZlYXR1cmUiOiJQcml2YXRlQXR0cmlidXRpb25WMiIsImV4cGlyeSI6MTc0MjA3OTYwMH0=
x-cloud-trace-context: a1db1d4053675a485243f03d10e0e38e
date: Wed, 15 Oct 2025 18:55:44 GMT
server: Google Frontend
via: 1.1 google
vary: Accept-Encoding
content-encoding: gzip
x-cache: miss
HTMLMediaElement: readyState property - Web APIs | MDN
A number which is one of the five possible state constants defined on the HTMLMediaElement
interface:
HTMLMediaElement.HAVE_NOTHING
(0)
No information is available about the media resource.
HTMLMediaElement.HAVE_METADATA
(1)
Enough of the media resource has been retrieved that the metadata attributes are initialized. Seeking will no longer raise an exception.
HTMLMediaElement.HAVE_CURRENT_DATA
(2)
Data is available for the current playback position, but not enough to actually play more than one frame.
HTMLMediaElement.HAVE_FUTURE_DATA
(3)
Data for the current playback position as well as for at least a little bit of time into the future is available (in other words, at least two frames of video, for example).
HTMLMediaElement.HAVE_ENOUGH_DATA
(4)
Enough data is available—and the download rate is high enough—that the media can be played through to the end without interruption.
This example will listen for audio data to be loaded for the element example
. It will
then check if at least the current playback position has been loaded. If it has, the
audio will play.
<audio id="example" preload="auto">
<source src="sound.ogg" type="audio/ogg" />
</audio>
const obj = document.getElementById("example");
obj.addEventListener("loadeddata", () => {
if (obj.readyState >= HTMLMediaElement.HAVE_CURRENT_DATA) {
obj.play();
}
});
HTMLMediaElement
: Interface used to define the HTMLMediaElement.readyState
property