2010-09-12 77 views
2

我有一個關於Rails 3如何與XHTML文檔類型一起工作的簡單問題。由於Rails 3使用UJS進行ajax調用(甚至包括正常調用,例如刪除調用),並通過使用HTML5數據屬性來實現,因此,由於XHTML不支持數據屬性,標記會自動失效嗎?Rails 3 UJS和XHTML

回答

6

data-*屬性在XHTML5中有效,它是HTML5的一種編碼。它們在XHTML 1.0中無效,但這可能不是一個大問題。

很可能,如果您將內容提供給真實世界的瀏覽器,則它們將其解析爲HTML,而不是XHTML。如果您將內容作爲text/html提供,瀏覽器會將其解析爲HTML。如果你把它當成application/xhtml+xml,那麼IE6會把它作爲原始的XML來呈現,而不是HTML,而在其他瀏覽器中,如果你犯了一個小錯誤,他們會停止解析並顯示一個醜陋的錯誤信息,而不是繼續嘗試來解析其餘的內容。如果您將其作爲text/html提供,那麼瀏覽器會將其解析爲text/html,因此無論它是否爲有效的XHTML都沒關係。

即使它是無效的XHTML 1.0,它仍然是格式良好的,並且Web瀏覽器不驗證用戶代理,所以內容是否有效並不重要。整個data-*屬性的要點是爲頁面上的腳本提供私有數據。由於data-*屬性不會阻止文檔格式良好,所以瀏覽器仍然會解析文檔,並且腳本可以訪問數據,無論數據是否爲有效的XHTML。

結果是:這些屬性在HTML5和XHTML5中有效。它們在XHTML 1.0中無效,但這並不重要,因爲這些屬性可以在所有主流瀏覽器中使用,爲您的頁面上的腳本提供私有數據。

+0

好的答案。現在有太多人對嚴格的有效性一味強硬。 – 2010-09-12 03:16:16