2011-09-01 95 views
1

我有以下的标记,使用VideoJS播放器(我可以包括的js也一样,如果有必要)来实现:HTML5视频验证错误

<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(this link)上列为流内容的<source>元素,而且我没有目前任何<track>元素。

我不确定的一件事是<video>元素的内容模型中'then transparent'的定义。从我的理解是,如果媒体元素内部的元素是有效的,如果它们在媒体元素的父元素内有效(来自此线程:Can I have multiple src attributes in an HTML5 <audio> element? Or an src attribute and a <source> element?),并且这也许是我错过的地方,因为我内部有<video>元素父母是<div>

任何人都可以确认这是我的错误,还是我应该忽略验证消息?如果这是一个错误,我应该如何布置我的内容?通过直接设计视频元素?

在此先感谢。

回答

3

你的理解是正确的,这看起来像验证错误。

Validator.nu,它基于与W3C验证程序相同的验证程序引擎,但很可能是更高版本,传递标记时没有任何错误。

0

此错误现已在HTML5 Validator中修复。

+0

显然不是。我在2018年遇到同样的问题。 – Vince