>
>
Использование атрибута >loop
вместе с атрибутом >autoplay
заставит меня искать вас с удвоенной энергией.
Вырваться из-под контроля
Элемент >audio
можно использовать не только для злых, но и для благих целей. Дать пользователю контроль над управлением проигрывания аудиофайла – здравая идея, которую легко осуществить с помощью булева атрибута >controls
:
>
>
Присутствие атрибута >controls
заставляет браузер отобразить встроенные элементы управления того, чтобы проигрывать аудиофайл и ставить его на паузу – и для того, чтобы настраивать громкость (рис. 3.05).
>Рис. 3.05. Используйте атрибут controls, для того чтобы отобразить элементы управления «проиграть», «пауза» и управления громкостью
Если вам не нравятся встроенные в браузер элементы управления, можете создать свои собственные. С помощью JavaScript вы можете взаимодействовать с >Audio
API, которое дает вам доступ к методам (>play
и >pause
) и свойствам (>volume
и др.). Вот быстрый и простой пример, как использовать элементы >button
и ужасные обработчики событий, написанные прямо в коде страницы (рис. 3.06):
>
>
>
>
>
>
>
>
> Громче
>
>
> Тише
>
>
>Рис. 3.06. Элементы управления (Проиграть, Пауза, Громче, Тише), сделанные с помощью элементов button
Буферизация
В какой-то момент спецификация HTML5 включала еще один булев атрибут для элемента >audio
. Атрибут >autobuffer
был более вежливым и продуманным вариантом неприятного атрибута >autoplay
. Он позволял авторам сообщить браузеру, что хотя аудиофайл и не нужно начинать проигрывать автоматически, скорее всего в какой-то момент пользователь начнет его проигрывать, поэтому браузеру стоит начать подгружать файл в фоновом режиме.
Это был бы полезный атрибут, но, к сожалению, Safari сделал лишний шаг вперед. Этот браузер начал подгружать аудиофайлы вне зависимости от того, присутствует атрибут >autobuffer
или нет. Не забывайте, что из-за того, что >autobuffer
– булева переменная, не было никакого способа сказать Safari, что подгружать аудиофайл не нужно: >autobuffer="false"
– то же самое, >что autobuffer="true"
или любое другое значение (http://bkaprt.com/html5/5)[9].
В данный момент атрибут >autobuffer
заменен атрибутом >preload
. Это не булев атрибут. Он принимает одно из трех возможных значений: >none
, >auto
и >metadata
. Написав >preload="none"
, вы можете явным образом указать браузеру, что подгружать аудиофайл заранее не нужно:
>
>
Если у вас на странице только один элемент audio, возможно, стоит использовать >preload="auto"
, но чем больше элементов audio появляется, тем больше интернет-канал посетителей вашей странички будет загружен из-за излишней предварительной подгрузки.