我有以下的标记,使用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>
?
任何人都可以确认这是我的错误,还是我应该忽略验证消息?如果这是一个错误,我应该如何布置我的内容?通过直接设计视频元素?
在此先感谢。
显然不是。我在2018年遇到同样的问题。 – Vince