Его вам сразу вклю́чат, а может быть, включáт
Элемент >audio
выглядит практически идеальным. Где-то должен быть подвох, правда? Он есть.
Проблемы с элементом >audio
не в спецификации. Главная проблема – с форматами аудиофайлов.
Хотя формат MP3 и распространен повсеместно, это не открытый формат. Из-за того, что на этот формат навешано множество патентов, нельзя написать декодер MP3, не заплатив отчислений по патенту. У корпораций вроде Apple или Adobe с этим нет проблем, но для маленьких компаний или опенсорс-групп это не так просто. Поэтому Safari будет с удовольствием проигрывать MP3-файлы, a Firefox – нет.
На свете есть и другие аудиоформаты. Кодек Vorbis – обычно для него используется файл с расширением >.ogg
– никакими патентами не обременен. Firefox поддерживает Ogg Vorbis, а Safari – нет.
К счастью, есть способ использовать элемент >audio
, не делая при этом «выбор Софи»[10] между форматами файлов. Вместо того чтобы использовать атрибут >src
в открывающем теге >
, можно указать несколько форматов файлов с помощью элемента source:
>
>
>
>
Браузер, который может проигрывать файлы Ogg Vorbis, не станет смотреть дальше первого элемента >source
. Браузер, который может проигрывать файлы MP3, но не может Ogg Vorbis, пропустит первый элемент >source
и проиграет файл во втором элементе >source
.
Можно помочь браузерам и указать MIME-типы для каждого исходного файла:
>
>
>
>
Элемент >source
– самостоятельный (или «пустой») элемент, так что если вы используете синтаксис XHTML, не забудьте включить закрывающий слэш в конца каждого тега >
.
Запасной вариант
Возможность указывать несколько элементов >source
очень удобна. Но есть браузеры, которые пока не поддерживают элемент >audio
совсем. Угадаете, на который браузер я намекаю?
Internet Explorer и его родню нужно кормить аудиофайлами с ложечки, по старинке, через Flash. Модель содержимого элемента >audio
позволяет это сделать. Все, что находится между открывающим и закрывающим тегами >
– и что при этом не является элементом >source
– будет показываться браузерам, которые не понимают элемента >audio
:
>
>
>
>
>
>value="player.swf?soundFile=witchitalineman.mp3">
>
>
В этом примере элемент >object
будет доступен только тем браузерам, которые не поддерживают элемент >audio
.
Можно пойти еще дальше. Элемент >object
, включающийся при «запасном варианте», тоже предоставляет вам возможность включить содержимое. Это значит, что, если больше ничего не срабатывает, можно дать старый проверенный вариант – гиперссылку:
>
>
>