【发布时间】:2011-09-01 17:09:23
【问题描述】:
我有以下标记,使用VideoJS 播放器实现(如果需要,我也可以包含 js):
<video id="example_video_1" class="video-js" width="736" height="352" controls="controls" autoplay="autoplay" loop="loop">
<source src="a/v/jt_homevid.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
<source src="a/v/jt_homevid.ogg" type='video/ogg; codecs="theora, vorbis"'>
<object id="flash_fallback_1" class="vjs-flash-fallback" width="736" height="352" type="application/x-shockwave-flash" data="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf">
<param name="movie" value="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" />
<param name="allowfullscreen" value="true" />
<param name="flashvars" value='config={"playlist":["<? echo $currurl; ?>/a/v/slide-1-joshtaerk-cdcover.jpg", {"url": "<? echo $currurl; ?>/a/v/jt_homevid.mp4","autoPlay":false,"autoBuffering":true}]}' />
<img src="a/v/slide-1-joshtaerk-cdcover.jpg" width="736" height="352" alt="Poster Image" title="No video playback capabilities." />
</object>
</video>
这目前未能通过 HTML 验证,并显示以下错误消息:
第 152 行,第 82 列:在此上下文中,元素源不允许作为元素视频的子元素。 (抑制来自该子树的更多错误。)...
可以使用元素源的上下文:作为媒体元素的子元素,在任何流内容或轨道元素之前。元素视频的内容模型:如果元素具有 src 属性:零个或多个轨道元素,则透明,但具有没有媒体元素后代。如果元素没有 src 属性:零个或多个源元素,然后是零个或多个轨道元素,然后是透明的,但没有媒体元素后代。
我明白,在 W3C HTML5 验证器的开发过程中,我现在可能不应该信任它,但如果我编码错误,我想确定在哪里以及如何在未来防止它。另外,我想确保我正确解释了错误消息,我认为这应该会发生。
我看不出我是如何偏离该元素的允许上下文的。它是媒体元素的子元素(特别是 <video> 标签),它在我相信的任何“流内容”之前,因为我找不到在 W3C 上列为流内容的 <source> 元素(this link) ,而我目前没有任何 <track> 元素。
我不确定的一件事是<video> 元素的内容模型中“然后透明”的定义。据我了解,如果媒体元素中的元素在媒体元素的父元素中也有效(来自此线程:@ 987654323@),那么这可能是我走错的地方,因为我有@ <div> 父元素中的 987654329@ 元素?
谁能确认这是我的错误,或者我是否应该忽略验证消息?如果这是一个错误,我还应该如何布置我的内容?通过直接设置视频元素的样式?
提前致谢。
【问题讨论】:
标签: javascript html video