我可以在HTML5 <audio>元素中有多个src属性吗?或者是src属性和<source />元素?</audio>

时间:2011-04-05 15:31:30

标签: html5 audio

我想知道<audio>元素的内容可以包含src属性或一个或多个<source>元素是什么意思。

  • 我可以拥有两个或更多src个属性吗?如果是这样,怎么样?
  • 我可以拥有src属性 <source>元素吗?

以下是我正在谈论的内容的链接:http://dev.w3.org/html5/markup/audio.html#audio

有人可以向我详细解释这个吗?

3 个答案:

答案 0 :(得分:4)

HTML5中的这类问题总是包含两部分:它是否有效,如果我这样做会发生什么?

<强> 1。有效吗?

没有。虽然标记语言参考的链接似乎没有用,但因为它省略了一个关键事实。 (见下文)。

相反,请查看the audio element的实际规范。

内容模型说:

  

如果元素具有src属性:零个或多个轨道   元素,然后透明,但有   没有媒体元素的后代。

     

如果元素没有src属性:一个或多个源   元素,然后是零或更多的轨道   元素,然后透明,但有   没有媒体元素的后代。

因此,当存在src属性时,不会特别调用source元素。

但是“透明”位呢?嗯,这意味着在audio元素的父元素内有效的元素在audio元素中也是有效的。因此,如果源元素在父元素中有效,那么即使音频元素具有src属性,它也在音频元素内有效。

这可能吗?如果我们检查the source element的规范,我们会看到可以使用该元素的上下文是

  

作为媒体元素的孩子,之前   任何流内容或轨道元素。

因此,音频元素的父元素必须是媒体元素,即<video><audio>

然而,回到音频元素的内容模型的定义(见上文),它说音频不能有媒体元素后代 - 因此音频元素不能嵌套在另一个音频元素中。 The video element的定义类似,因此<source>不能通过音频元素内容模型的“透明”部分成为<audio>的有效子级。

因此,包含src属性和<source>子项的音频元素无法生效。

(请注意,您链接到的标记语言参考页面未提及无媒体元素后代限制,因此我不相信可以从中确定正确的验证。)


<强> 2。如果我这样做会怎么样?

这有点简单。 the src attribute on media elements的规范说:

  

指定媒体有两种方法   资源,src属性或源   元素。该属性会覆盖   元件。

换句话说,如果存在src属性,则只会忽略任何<source>元素。


请参阅Ian Boyd关于多个src属性问题的答案。

答案 1 :(得分:1)

你问是否:

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

有效吗?

我会说不 - 这没有意义:

  • 您不能多次指定属性
  • 你希望它播放什么文件

答案 2 :(得分:1)

你可能有很多源元素,例如:

<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>

虽然并期望两者都发挥,但只有第一个会。