HTML5视频代码没有来源?

时间:2009-12-22 05:09:52

标签: html video html5

如果我有一个HTML5 VIDEO标记但是在元素中既不包含SRC属性也不包含SOURCE标记,是否有任何已定义的行为?这仍然是有效的HTML,如果是这样,(HTML5能力)浏览器应该做什么 - 忽略该元素或显示它的内容?

2 个答案:

答案 0 :(得分:8)

是的,有明确的行为; HTML5试图为任何可能在浏览器之间产生差异的情况提供定义的行为,以减少不兼容性,即使在处理无效文档时也是如此。

从我对the spec的阅读中看,没有src属性或source元素似乎无效:

  

内容模型:
  如果   element有一个src属性:   透明,但没有媒体元素   后裔。
  如果元素没有   有一个src属性:一个或多个   源元素,然后,透明,   但没有媒体元素   后代。

这似乎向我表明它必须具有src属性或source子元素。但Validator.nuW3C 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一样,可以设置风格,但没有自己的内在显示,但它将是widthheight属性指定的宽度和高度。 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标记一样。所以没有它就不会有效,但它可能默认链接一个不存在的视频..

重要的是要记住,无论规格如何,浏览器都会以不同的方式实现,因此您只需等待即可。