2011-09-01 122 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