Audio()

Конструктор Audio() создаёт и возвращает новый HTMLAudioElement объект, который может быть прикреплён к документу, чтобы пользователь мог взаимодействовать и/или слушать его, либо может использоваться вне экрана для управления и воспроизведения звука.

Синтаксис

audioObj = new Audio(url);

Параметры

url Необязательный

Необязательный параметр DOMString, содержащий URL-адрес аудиофайла, который будет связан с новым аудиоэлементом.

Возвращаемое значение

Новый HTMLAudioElement объект, настроенный для воспроизведения файла, указанного в url. Свойство preload нового объекта имеет значение по умолчанию auto, а его свойство src — указанный URL-адрес или null, если адрес не указан. Если указан URL-адрес, браузер начинает асинхронно загружать медиаресурс перед возвратом нового объекта.

Примечания по использованию

Вы также можете использовать другие методы создания элементов, такие как метод createElement() объекта document, для создания нового HTMLAudioElement объекта.

Определение, когда воспроизведение может начаться

Существует три способа определить насколько аудио-файл загружен, чтобы начать воспроизведение:

  • Проверьте значение свойства readyState (en-US). Если оно равняется HTMLMediaElement.HAVE_FUTURE_DATA, значит загружено достаточно данных, чтобы начать воспроизведение и проиграть хотя бы короткое время. Если HTMLMediaElement.HAVE_ENOUGH_DATA — доступно достаточно данных, чтобы воспроизводить аудио до конца без прерываний, учитывая текущую скорость загрузки.
  • Прослушайте событие canplay (en-US). Оно отправляется элементу <audio>, когда достаточно данных для воспроизведения (хотя возможны прерывания).
  • Прослушайте событие canplaythrough (en-US). Оно отправляется, когда предполагается, что аудио должно воспроизводиться до конца без прерываний.

Лучший подход, основанный на событии:

js
myAudioElement.addEventListener("canplaythrough", (event) => {
  /* аудио может быть воспроизведено; проиграть, если позволяют разрешения */
  myAudioElement.play();
});

Использование памяти и управление

Если все ссылки на аудиоэлемент, созданные с помощью конструктора Audio() удалены, сам элемент не будет удалён из памяти механизмом сборщика мусора JavaScript, если в данный момент идёт воспроизведение. Вместо этого продолжится воспроизведение и объект останется в памяти до тех пор, пока не закончится аудио или оно не будет приостановлено (например, путём вызова pause() (en-US)). В этот момент объект подлежит уничтожению сборщиком мусора.

Спецификации

Specification
HTML Standard
# dom-audio-dev

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также