HTML5 в мобильных браузерах

При создании плеера на основе HTML5 следует учитывать особенности работы элемента <audio> в мобильных браузерах:

  1. Чтобы элемент <audio> начал воспроизводить звук, первый вызов метода play() должен быть выполнен внутри обработчика пользовательского события (например, клика).

    В API подписка на пользовательские события осуществляется автоматически. При создании элемента <audio> API подписывается на события HTML-объекта <body>: keydown, mousedown и touchstart. Как только пользователь запустит воспроизведение в аудиоплеере, YandexAudio автоматически удалит обработчики этих событий.

  2. Если на страницу добавлено более одного элемента <audio>, эти элементы работают некорректно.

    Только один элемент<audio> может быть активным. Если запустить воспроизведение во втором элементе, то в первом оно остановится и этот элемент прекратит работу. Повторная попытка запустить воспроизведение в первом элементе не даст результатов. Для возобновления работы первого элемента необходимо повторно загрузить аудиофайл с помощью метода load().

    Примечание. Даже если аудиофайл полностью закешировался и ссылка в элементе <audio> не менялась, повторный вызов метода load() повторно загрузит аудиофайл с нуля. Кеширование данных не применяется.

    Библиотека YandexAudio решает указанные выше проблемы — при запуске воспроизведения аудиофайла API следит за процессом загрузки и обновления позиции воспроизведения. Если воспроизведение не началось, то API заново загружает аудиофайл с помощью метода load() и запускает воспроизведение заново с точки, на которой оно остановилось. При отладке работы плеера следует учитывать данное поведение.

  3. Некоторые мобильные браузеры запрещают элементу <audio> изменять громкость.

    Для того чтобы проверить, есть ли возможность программного изменения громкости, можно воспользоваться методом isDeviceVolume().