HTML5视频和源标签

3

我正在使用HTML5视频标签<video>,并注意到在Brackets Validator中出现了错误。

令我担忧的是video标签内部的<source>标签。通常我的写法如下:

<source src="somecoolvideo.mp4" type="video/mp4">

但是这个出现了错误,指出它需要一个闭合的</source>标签。
<source src="somecoolvideo.mp4" type="video/mp4"></source>

现在两种方法在浏览器中都可以运行,并且我没有读到任何关于使用</source>的信息,所以我有点困惑什么是正确的做法。有人知道正确的做法吗?


@Zsigoveny 这与视频标签有什么关系? - putvande
你使用的是哪个浏览器? - user2957312
“括号验证器” - 这是谁?说真的,在HTML5中,独立元素不需要关闭标签(尽管您可以编写它们,如果您想要XML兼容性,请参见http://dev.w3.org/html5/html-polyglot/html-polyglot.html) - CBroe
3个回答

7
不,<source>元素不能有结束标签,也不能自我关闭,你正在使用的验证器是错误的。
这里是W3规范
引用:

source元素是一个空元素。source元素必须有开始标签,但不能有结束标签。

空元素是指其内容模型在任何情况下都不允许其具有内容的元素(但是空元素可以具有属性)。
正确的示例:
<video controls>
 <source src="http://media.w3.org/2010/05/sintel/trailer.mp4"
         type='video/mp4; codecs="avc1, mp4a"'>
 <source src="http://media.w3.org/2010/05/sintel/trailer.ogv"
         type='video/ogg; codecs="theora, vorbis"'>
 <p>Your user agent does not support the HTML5 Video element.</p>
</video>

4
有趣的是,因为规范并未要求使用闭合标签,并且其中的示例也没有使用闭合标签。
看起来“Brackets Validator”无法正确验证HTML5。那么W3C Validator对此有何说法呢?如果我将其输入W3C验证器,则可以顺利通过验证。
<!DOCTYPE html>
<html>
<head><title>test</title></head>
<body>
    <video>
        <source src="somecoolvideo.mp4" type="video/mp4">
    </video>
</body>
</html>

此外,如果我添加了一个闭合的</source>标签,W3C会报错:
Line 6, Column 66: Stray end tag source.
    <source src="somecoolvideo.mp4" type="video/mp4"></source>

因此,在这种情况下不仅没有关闭标签是有效的,而且实际上有一个是明确无效的。

我刚刚对Brackets使用的验证器进行了一些研究,发现它使用的是HTMLHint(http://htmlhint.com/),因此它并没有使用W3C验证器。可以肯定的是,我将删除这个扩展程序。感谢您的帮助。 - mhartington

-1

你的两个例子都是正确的。你可以随时像这样使用闭合标签


<video src="Video/Movie.mp4" width="320" height="240" controls poster="Img/My.jpg">
    <a href="Video/Movie.mp4">Download movie</a>
</video>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接