2011-08-01 29 views
1

ARIA屬性是否需要存在於實際的HTML中?或者,它們可以在運行時通過Javascript添加嗎?ARIA屬性,DOM和優雅劣化

考慮以下情形......

<button id="submit" type="submit">Submit</button> 
<div id="validation-message"></div> 

如果用戶的瀏覽器沒有使用Javascript,我們向他們展示了新的一頁(由服務器處理和生成)的驗證。如果用戶的瀏覽器確實有Javascript,我們用以下代碼擴充上述HTML,然後在DIV中動態顯示驗證。

$('#submit').attr({'aria-haspopup':true, 'aria-owns':'validation-message'}); 
$('validation-message').attr({'role':'alert', 'aria-live':'assertive'}); 

我想另外一個問題是,它會直接在HTML源代碼中直接使用這些ARIA屬性嗎?如果Javascript不存在,ARIA會做什麼嗎?

回答

4

ARIA Landmark角色可以直接放入標記中,即使JavaScript被禁用,它們也可以是有益的。如果ARIA屬性描述的功能僅在啓用JavaScript時可用,那麼我認爲可以使用JavaScript添加這些屬性。

+0

地標角色我可以看到沒有JavaScript的意義。但是,像「詠歎調」這樣的屬性並不是那麼重要。 – Bart

0

W3C文檔(工作草案)Using WAI-ARIA in HTML在條款Add ARIA inline or via script?中建議使用腳本添加ARIA屬性,而不是使用HTML標記編寫。然而,它補充說,如果「不依賴腳本來提供交互行爲」,或者「僅在支持腳本的瀏覽上下文中支持內容和交互」,則該屬性可以用標記編寫。

這是有點間接的,甚至可能是人爲的說法,即將屬性置於標記中大多數情況都可以。例外情況是屬性表示一種沒有腳本的情況下有意義的關係,但在腳本禁用時會提供錯誤的信息。我想說aria-haspopup可能屬於這個類別,因爲一個元素可能會有一個沒有腳本的彈出窗口,但是目前它必須用腳本來實現 - 所以當禁用腳本時,瀏覽器可能仍然期望aria-haspopup具有相關性並且會因此得出不正確的結論。