HTMLAudioElement: Audio() 建構函式

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

Audio() 建構函式建立並返回一個新的 HTMLAudioElement 物件,該物件可以附加到文件以供使用者互動和/或收聽,也可以離屏使用以管理和播放音訊。

語法

js
new Audio()
new Audio(url)

引數

url 可選

一個可選字串,包含要與新音訊元素關聯的音訊檔案的 URL。

返回值

一個新的 HTMLAudioElement 物件,配置為從 url 指定的檔案播放音訊。新物件的 preload 屬性設定為 auto,其 src 屬性設定為指定的 URL,如果沒有提供 URL 則設定為 null。如果指定了 URL,瀏覽器會在返回新物件之前開始非同步載入媒體資源。

用法說明

您也可以使用其他元素建立方法,例如 document 物件的 createElement() 方法來構造一個新的 HTMLAudioElement

確定何時可以開始播放

有三種方法可以確定音訊檔案已載入足夠的資料以開始播放:

  • 檢查 readyState 屬性的值。如果它是 HTMLMediaElement.HAVE_FUTURE_DATA,則有足夠的資料可供開始播放,並能至少播放一小段時間。如果它是 HTMLMediaElement.HAVE_ENOUGH_DATA,則有足夠的資料,根據當前的下載速率,您應該能夠無中斷地將音訊播放到最後。
  • 監聽 canplay 事件。當有足夠的音訊可供開始播放時,該事件會發送到 <audio> 元素,但可能會發生中斷。
  • 監聽 canplaythrough 事件。當估計音訊應該能夠無中斷地播放到最後時,會發送此事件。

基於事件的方法是最好的

js
myAudioElement.addEventListener("canplaythrough", (event) => {
  /* the audio is now playable; play it if permissions allow */
  myAudioElement.play();
});

記憶體使用和管理

如果使用 Audio() 建構函式建立的音訊元素的所有引用都被刪除,如果當前正在播放音訊,JavaScript 執行時垃圾回收機制不會將該元素本身從記憶體中刪除。相反,音訊將繼續播放,物件將保留在記憶體中,直到播放結束。屆時,物件將可被垃圾回收。

規範

規範
HTML
# dom-audio-dev

瀏覽器相容性

另見