2014-02-20 46 views
61

我已經閱讀了role屬性添加到Bootstrap可訪問性,我想知道如何<form role="form">幫助可訪問性。有關此特定用法的示例,請參閱http://getbootstrap.com/css/#forms-example角色=形式如何幫助可訪問性?

searched Bootstrap's repo for "role"無濟於事。

我的問題是,信息似乎是多餘的。元素是表單的概念已經由HTML標記本身(<form>)表示,那麼如果我們還添加了該元素正在播放的form,那麼它有什麼用處?這將是有意義的增加role="..."如果role將是比form不同的(我不知道是什麼 - 但是讓我們假設); (尤其是沒有具體的推理/使用案例),它充其量是令人費解的。

+0

11個月上,引導版本剛剛發佈(V3 .3.2)已經刪除了很多'role =「form」'的實例,這裏是pull請求:https://github.com/twbs/bootstrap/pull/15125 –

回答

75

如果添加了role="form"到表單中,屏幕閱讀器將其視爲網頁上的區域。這意味着用戶可以使用他/她的區域快速導航鍵輕鬆跳到表單(例如,在JAWS 15中,您使用R)。此外,您的用戶將能夠輕鬆找到表格開始和結束的位置,因爲屏幕閱讀器會標記區域的開始和結束。

+3

爲什麼這樣的程序(JAWS 15)沒有跳轉到帶'* R' *的'

'標籤* - 爲什麼它只跳轉到'form' **角色**? – user664833

+6

由於* R *鍵設計用於移動ARIA區域(例如文章,導航元素,內容信息等)。這就是爲什麼你只有一個註冊如果你用'role'屬性標記它。然後你的屏幕閱讀器會說:「頁面包含X標題,Y鏈接和Z區域」。 –

+3

感謝您提及ARIA(無障礙富互聯網應用程序)。 [本頁面和嵌入的視頻](http://blog.paciellogroup.com/2013/02/using-wai-aria-landmarks-2013/)幫助我獲得了[角色屬性]的讚賞(http:///www.w3.org/TR/role-attribute/)。現在我明白'角色'定義了* ARIA標誌性地區*。 JAWS用戶使用特定的按鍵從一個地標移動到另一個地標,當到達地標時,JAWS宣佈地標的目的(例如「橫幅地標」,「搜索地標」,「導航地標」,「主要地標」)協助視障用戶。 – user664833

3

從語義上講,默認情況下,形式,好了,一個形式。然而,並非所有的輔助功能應用程序(屏幕閱讀器等)都是相同的,有些人甚至可以使用具有不同屬性的元素(甚至是表單元素),即使他們知道父表單元素在具有或不具有相同語義含義role=form屬性。

+4

這看起來很抽象。你能指出一些具體的例子,所以我可以欣賞這種區別? – user664833

+3

我認爲@salmanxk意味着頁面上可能有幾種形式,但只有一種形式是真正的形式。例如:在聯繫我們頁面上,通常會填寫一個表單:此表單將具有role =「form」。不過,導航欄中還可能有搜索表單和/或每個頁面上的聯合我們的郵件列表表單。導航窗體可能有role =「search」,而郵件列表可能有role =「join」。每個表單都有不同的角色可以發揮作用,角色標籤可以幫助表示角色的作用。 –

4

我想指出的是,在comment文章提到@ user664833指出role="form"不應該去<form>元素,而是它不是語義上一個<div>或一些其他元素上表明它含有表單元素。

<form>元素可能已經處理現代屏幕閱讀器正確

Quote (link):

推介語義中性元件上使用[role="form"]如<div>不是<form>元件上,作爲元素已經具有默認角色語義暴露

+0

同意 - 我在頁面上遇到了一個的麻煩。當你選擇一個元素時,JAWS一直希望從頭開始讀出表單。 – Desmond

3

事實上,ARIA建議國家顯然應該不會改變宿主語言semmantics在1.4節:

「這是不恰當的時候 宿主語言提供了創建具有的風格和腳本對象雖然WAI-ARIA可以提高這些對象的可訪問性,但最好通過允許用戶代理以本地方式處理對象來提供可訪問性,例如,最好使用h1 對象在HTML中比使用headi ng元素上的角色。「

所以,寫<form role='form'>不僅是多餘的,但反對該建議。方[d]的效果像不服從建議一提到結果。