2009-12-22 134 views
2

如果我有HTML5 VIDEO標籤,但是在元素中既不包含SRC屬性也不包含SOURCE標籤,是否有任何已定義的行爲?這仍然是有效的HTML,如果是的話,(HTML5能力)瀏覽器應該做什麼 - 忽略元素或顯示它的內容?HTML5視頻標籤沒有源代碼?

回答

6

是的,有定義的行爲; HTML5試圖爲瀏覽器之間的差異提供定義的行爲,以減少不兼容性,即使在處理無效文檔時也是如此。

從我的the spec閱讀,它看起來是無效的沒有src屬性或source元素:

內容模型:
如果 元素具有src屬性: 透明,但沒有媒體元素 後代。
如果元素沒有 具有src屬性:一個或多個 源元素,則透明, 但沒有媒體元素 後代。

這似乎表明它必須具有src屬性或source子元素。然而無論是Validator.nuW3C Validator似乎認爲,這是一個有效的文件:

<!DOCTYPE html> 
<title>Video test</title> 
<video></video> 

不管它是有效的,該行爲在resource selection algorithm定義如下:

⌛否則媒體元素具有 既不是src屬性也不是源 element child:將networkState設置爲 NETWORK_EMPTY,並中止這些步驟; 同步部分結束。

這意味着HAVE_NOTHING

HAVE_NOTHING(數值0)
有關媒體 資源無資料的準備狀態。 當前播放位置沒有數據可用 。其網絡狀態屬性爲 NETWORK_EMPTY的媒體元素始終處於 HAVE_NOTHING狀態。

在該狀態下,視頻是由它的poster frame,或沒有什麼表示:

當沒有視頻數據可用(在 元素的readyState的屬性是 要麼HAVE_NOTHING,或 HAVE_METADATA但沒有視頻數據仍然有 ),視頻 元素代表海報 框架,或什麼也沒有。

當它沒有表示時,表示它只是一個普通的盒子;就像div一樣,雖然它的寬度和高度由widthheight屬性指定,但它可以是樣式但沒有自己的內在顯示。 For example

<!DOCTYPE html> 
<video width=100 height=100 
     style="border-width: 1px; border-color:black; border-style: solid; 
       background: green"> 
foobar 
</video> 

注意,它不會顯示其內容,在支持video標籤瀏覽器。在video標籤,比source元素以外內的內容,意在僅由不支持video元素舊的瀏覽器將回退到內容顯示:

內容可以在 視頻元素的內部。用戶代理不應該 向用戶顯示此內容;它是用於其 不支持視頻老的瀏覽器 ,使傳統 視頻插件可以嘗試,或顯示 文本到這些老 瀏覽器的用戶,告知他們如何 訪問視頻內容。

+0

我想補充說,默認的大小,如果不是由寬度/高度屬性或CSS設置,是300x150。 – foolip

-2

我想如果沒有找到視頻,就會顯示內容,在你的情況下甚至沒有指定它。但是我也假設標籤的src屬性是強制性的,就像img標籤一樣。所以它不會是有效沒有它,但它可以默認鏈接一個不存在的視頻..

重要的是要記住,瀏覽器將實現不同的事情,不管規格,所以你只是有等着瞧。