我有以下的標記,使用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