我想知道<audio>
元素的内容可以包含src
属性或一个或多个<source>
元素是什么意思。
src
个属性吗?如果是这样,怎么样?src
属性和 <source>
元素吗?以下是我正在谈论的内容的链接:http://dev.w3.org/html5/markup/audio.html#audio
有人可以向我详细解释这个吗?
答案 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>
虽然并期望两者都发挥,但只有第一个会。