HTML5 в мобильных браузерах
При создании плеера на основе HTML5 следует учитывать особенности работы элемента <audio> в мобильных браузерах:
Чтобы элемент <audio> начал воспроизводить звук, первый вызов метода
play()
должен быть выполнен внутри обработчика пользовательского события (например, клика).В API подписка на пользовательские события осуществляется автоматически. При создании элемента <audio> API подписывается на события HTML-объекта <body>:
keydown
,mousedown
иtouchstart
. Как только пользователь запустит воспроизведение в аудиоплеере, YandexAudio автоматически удалит обработчики этих событий.Если на страницу добавлено более одного элемента <audio>, эти элементы работают некорректно.
Только один элемент<audio> может быть активным. Если запустить воспроизведение во втором элементе, то в первом оно остановится и этот элемент прекратит работу. Повторная попытка запустить воспроизведение в первом элементе не даст результатов. Для возобновления работы первого элемента необходимо повторно загрузить аудиофайл с помощью метода
load()
.Примечание. Даже если аудиофайл полностью закешировался и ссылка в элементе <audio> не менялась, повторный вызов методаload()
повторно загрузит аудиофайл с нуля. Кеширование данных не применяется.Библиотека YandexAudio решает указанные выше проблемы — при запуске воспроизведения аудиофайла API следит за процессом загрузки и обновления позиции воспроизведения. Если воспроизведение не началось, то API заново загружает аудиофайл с помощью метода
load()
и запускает воспроизведение заново с точки, на которой оно остановилось. При отладке работы плеера следует учитывать данное поведение.Некоторые мобильные браузеры запрещают элементу <audio> изменять громкость.
Для того чтобы проверить, есть ли возможность программного изменения громкости, можно воспользоваться методом isDeviceVolume().