如果我有一个HTML5 VIDEO标记但是在元素中既不包含SRC属性也不包含SOURCE标记,是否有任何已定义的行为?这仍然是有效的HTML,如果是这样,(HTML5能力)浏览器应该做什么 - 忽略该元素或显示它的内容?
答案 0 :(得分:8)
是的,有明确的行为; HTML5试图为任何可能在浏览器之间产生差异的情况提供定义的行为,以减少不兼容性,即使在处理无效文档时也是如此。
从我对the spec的阅读中看,没有src
属性或source
元素似乎无效:
内容模型:
如果 element有一个src属性: 透明,但没有媒体元素 后裔。
如果元素没有 有一个src属性:一个或多个 源元素,然后,透明, 但没有媒体元素 后代。
这似乎向我表明它必须具有src
属性或source
子元素。但Validator.nu和W3C Validator似乎认为这是一份有效的文件:
<!DOCTYPE html>
<title>Video test</title>
<video></video>
无论它是否有效,行为都在resource selection algorithm中定义如下:
⌛否则媒体元素有 既不是src属性也不是源代码 element child:将networkState设置为 NETWORK_EMPTY,并中止这些步骤; 同步部分结束。
这意味着就绪状态为HAVE_NOTHING
HAVE_NOTHING
(数值0)
没有关于媒体的信息 资源可用。没有数据 当前播放位置是 可用。媒体元素的 networkState属性是NETWORK_EMPTY
始终在。{HAVE_NOTHING
州。
在该状态下,视频由其poster frame表示,或者不显示:
当没有可用的视频数据时( element的readyState属性是 要么是
HAVE_NOTHING
,要么是HAVE_METADATA
但没有视频数据 但是一直都是获得的,视频 element代表海报 框架,或什么也没有。
如果没有任何表示,那就意味着它只是一个通用的盒子;就像div
一样,可以设置风格,但没有自己的内在显示,但它将是width
和height
属性指定的宽度和高度。 For example:
<!DOCTYPE html>
<video width=100 height=100
style="border-width: 1px; border-color:black; border-style: solid;
background: green">
foobar
</video>
请注意,在支持video
标记的浏览器中,它不会显示其内容。除了video
元素之外,source
标记内的内容仅用于不支持video
元素的旧版浏览器显示的后备内容:
内容可能会在内部提供 视频元素。用户代理不应该 向用户显示此内容;它是 适用于较旧的Web浏览器 不支持视频,所以遗留下来 视频插件可以尝试,或显示 文本给这些旧版本的用户 浏览器通知他们如何 访问视频内容。
答案 1 :(得分:-2)
我想如果找不到视频会显示内容,而在你的情况下甚至没有指定。但是我也假设src属性对于标记是必需的,就像img标记一样。所以没有它就不会有效,但它可能默认链接一个不存在的视频..
重要的是要记住,无论规格如何,浏览器都会以不同的方式实现,因此您只需等待即可。