Могу ли я иметь несколько атрибутов src в элементе HTML5 <audio>?Или атрибут src и элемент <source>? - PullRequest
4 голосов
/ 05 апреля 2011

Мне было интересно, что это значит, что элемент <audio> может иметь атрибут src или один или несколько элементов <source> для его содержимого.

  • Могу ли я иметь два или более атрибута src? Если да, то как?
  • Могу ли я иметь атрибут src и a <source> element?

Вот ссылка на то, о чем я говорю: http://dev.w3.org/html5/markup/audio.html#audio

Может кто-нибудь объяснить мне это подробно?

Ответы [ 3 ]

4 голосов
/ 06 апреля 2011

Подобные вопросы в HTML5 всегда состоят из двух частей: действительно ли это так и что произойдет, если я все равно это сделаю?

1. Это действительно?

Нет. Хотя ссылка на ссылку на язык разметки не кажется полезной, поскольку в ней отсутствует критический факт. (см. ниже).

Вместо этого посмотрите на действительную спецификацию аудиоэлемента .

Модель контента для этого говорит:

Если элемент имеет атрибут src: ноль или более дорожка элементы, то прозрачные, но с нет потомков медиа-элемента.

Если элемент не имеет атрибута src: один или несколько источников элементы, то ноль или более трек элементы, то прозрачные, но с нет потомков медиа-элемента.

Таким образом, элемент источника специально не вызывается как разрешенный, когда присутствует атрибут src.

Но как насчет "прозрачного" бита? Ну, это означает, что элементы, которые действительны внутри родительского элемента аудио, также действительны внутри элемента аудио. Таким образом, если элемент source был допустим в родительском элементе, то он также был бы действительным внутри элемента audio, даже если элемент audio имел атрибут src.

Возможно ли это? Если мы проверим спецификацию для исходного элемента , мы увидим, что контекст, в котором этот элемент может использоваться, равен

Как дочерний элемент медиа, до любое содержимое потока или элементы отслеживания.

Таким образом, родительский элемент аудиоэлемента должен быть медиа-элементом, т.е. <video> или <audio>.

Однако, вернувшись к определению модели содержимого аудиоэлемента (см. Выше), в нем говорится, что аудио не может иметь потомков медиа-элементов - поэтому аудио-элемент не может быть вложен в другой аудиоэлемент. Элемент видео определен аналогичным образом, поэтому <source> не может быть допустимым дочерним элементом <audio> через «прозрачную» часть модели содержимого элемента аудио.

Следовательно, аудиоэлемент с атрибутом src и дочерними элементами <source> не может быть действительным.

(Обратите внимание, что на странице «Ссылка на язык разметки», на которую вы ссылаетесь, не упоминается ограничение об отсутствии потомков медиаэлемента, поэтому я не верю, что по нему можно определить правильную проверку.)


2. Что произойдет, если я все равно это сделаю?

Это несколько проще. Спецификация для атрибута src на медиаэлементах говорит:

Существует два способа указать носитель ресурс, атрибут src или источник элементы. Атрибут переопределяет элементы.

Другими словами, если присутствует атрибут src, любые элементы <source> просто игнорируются.


См. Ответ Иана Бойда по поводу нескольких src атрибутов.

1 голос
/ 06 апреля 2011

У вас вполне может быть несколько исходных элементов, например:

<audio>
  <source src="music.mp3" type="audio/mpeg" />
  <source src="music.ogg" type="audio/ogg" />
</audio>

UA будут воспроизводить первый доступный файл, который они смогут воспроизвести.

Если вы укажете srcАтрибут также имеет приоритет перед остальными.

Вы не можете сделать

<audio>
  <source src="test.mp3" type="audio/mpeg" />
  <source src="test2.mp3" type="audio/mpeg" />
</audio>

, хотя и ожидаете, что оба будут играть, только первое будет.

1 голос
/ 05 апреля 2011

Вы спрашиваете, если:

<AUDIO src="file1.wav" src="file2.wav" src="file3.wav"></AUDIO>

действительно?

я скажу нет - это не имеет смысла:

  • вы не можетеукажите атрибут более одного раза
  • в каком файле вы хотите его воспроизвести
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...