HTMLAudioElement: hàm khởi tạo Audio()

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.

Hàm khởi tạo Audio() tạo và trả về HTMLAudioElement mới có thể được gắn vào tài liệu để người dùng tương tác và/hoặc nghe, hoặc có thể được sử dụng ngoài màn hình để quản lý và phát âm thanh.

Cú pháp

js
new Audio()
new Audio(url)

Tham số

url Optional

Chuỗi tùy chọn chứa URL của tệp âm thanh được liên kết với phần tử âm thanh mới.

Giá trị trả về

Đối tượng HTMLAudioElement mới, được cấu hình để sử dụng cho việc phát lại âm thanh từ tệp được chỉ định bởi url. Thuộc tính preload của đối tượng mới được đặt thành auto và thuộc tính src của nó được đặt thành URL được chỉ định hoặc null nếu không có URL nào được cung cấp. Nếu URL được chỉ định, trình duyệt bắt đầu không đồng bộ tải tài nguyên phương tiện trước khi trả về đối tượng mới.

Ghi chú sử dụng

Bạn cũng có thể sử dụng các phương thức tạo phần tử khác, chẳng hạn như phương thức createElement() của đối tượng document, để xây dựng HTMLAudioElement mới.

Xác định khi nào có thể bắt đầu phát lại

Có ba cách để biết khi nào đủ tệp âm thanh đã được tải để cho phép phát lại bắt đầu:

  • Kiểm tra giá trị của thuộc tính readyState. Nếu là HTMLMediaElement.HAVE_FUTURE_DATA, có đủ dữ liệu để bắt đầu phát lại. Nếu là HTMLMediaElement.HAVE_ENOUGH_DATA, thì có đủ dữ liệu để bạn có thể phát âm thanh đến hết mà không bị gián đoạn.
  • Lắng nghe sự kiện canplay. Nó được gửi đến phần tử <audio> khi có đủ âm thanh để bắt đầu phát lại, mặc dù có thể xảy ra gián đoạn.
  • Lắng nghe sự kiện canplaythrough. Nó được gửi khi ước tính âm thanh có thể phát đến hết mà không bị gián đoạn.

Cách tiếp cận dựa trên sự kiện là tốt nhất:

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

Quản lý bộ nhớ

Nếu tất cả các tham chiếu đến phần tử âm thanh được tạo bằng hàm khởi tạo Audio() bị xóa, phần tử sẽ không bị xóa khỏi bộ nhớ bởi cơ chế thu gom rác của JavaScript runtime nếu việc phát lại đang diễn ra. Thay vào đó, âm thanh sẽ tiếp tục phát và đối tượng sẽ vẫn ở trong bộ nhớ cho đến khi việc phát lại kết thúc. Vào thời điểm đó, đối tượng trở thành đối tượng để thu gom rác.

Thông số kỹ thuật

Specification
HTML
# dom-audio-dev

Tương thích trình duyệt

Xem thêm