1 ...8 9 10 12 13 14 ...24 autoplay>
Если вы когда-нибудь будете так использовать атрибут autoplay
, знайте: я вас найду.
Обратите внимание, что у атрибута autoplay
нет значения. Такие атрибуты называются булевыми, в честь Джорджа Буля, великого математика из Корка [8].
Компьютерная логика целиком основана на булевой логике: электрический ток либо течет, либо нет; двоичное значение – либо единица, либо ноль; результат расчета – либо истина (true), либо ложь (false).
Не перепутайте булевы атрибуты и булевы значения. Вас можно понять, если вы подумаете, что булев атрибут будет принимать значения true и false. В действительности булево по природе само существование элемента: присутствует он или нет. Даже если напишете атрибуту значение, никакого эффекта это иметь не будет. Написать autoplay="false"
или autoplay="no thanks"
– то же самое, что написать autoplay
.
Если вы используете синтаксис XHTML, можете написать autoplay="autoplay"
. Этот синтаксис используется в официальных документах Управления по управлению управлением избыточной информацией.
Если ставить аудиофайл на автоматическое проигрывание не кажется вам достаточно зловредным, вы можете принести еще больше скорби в этот мир, заставив аудиофайл бесконечно повторяться. Другой булев атрибут, loop
, позволит вам совершить этот низкий поступок:
loop>
Использование атрибута loop
вместе с атрибутом autoplay
заставит меня искать вас с удвоенной энергией.
Вырваться из-под контроля
Элемент audio
можно использовать не только для злых, но и для благих целей. Дать пользователю контроль над управлением проигрывания аудиофайла – здравая идея, которую легко осуществить с помощью булева атрибута controls
:
controls>
Присутствие атрибута controls
заставляет браузер отобразить встроенные элементы управления того, чтобы проигрывать аудиофайл и ставить его на паузу – и для того, чтобы настраивать громкость ( рис. 3.05).
Рис. 3.05.Используйте атрибут controls, для того чтобы отобразить элементы управления «проиграть», «пауза» и управления громкостью
Если вам не нравятся встроенные в браузер элементы управления, можете создать свои собственные. С помощью JavaScript вы можете взаимодействовать с Audio
API, которое дает вам доступ к методам ( play
и pause
) и свойствам ( volume
и др.). Вот быстрый и простой пример, как использовать элементы button
и ужасные обработчики событий, написанные прямо в коде страницы ( рис. 3.06):
onclick="document.getElementById(‘player’). play()">
Проиграть
onclick="document.getElementById(‘player’). pause()">
Пауза
onclick="document.getElementById(‘player’). volume
+= 0.1">
Громче
onclick="document.getElementById(‘player’). volume
-= 0.1">
Тише
Рис. 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"
, вы можете явным образом указать браузеру, что подгружать аудиофайл заранее не нужно:
preload="none">
Читать дальше
Конец ознакомительного отрывка
Купить книгу