2017-02-06 43 views
1

這更多是一個歷史或爲什麼問題。爲什麼tabindex在錨點鏈接上默認爲-1,但不是按鈕?

與按鈕不同,鏈接傾向於將tabIndex-1設置爲默認值。我知道這是因爲:

https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex

如果沒有指定默認值是-1

但按鈕會自動有一個tabIndex,所以問題是:什麼是決定背後的理由鏈接不需要有大於0的tabIndex?並且因爲Tab鍵應該忽略處於默認狀態的鏈接。

+1

我一直這樣做。我經常將鏈接放入演示中,以便在頁面上有另一個製表位。你有沒有爲你工作的視頻?如果鏈接沒有「href」,那麼它不是鏈接,它是一個錨點,並且不存在於Tab鍵順序中。 – aardrian

回答

2

HTML5.1¹定義省略tabindex attribute當用戶代理應該做的:

用戶代理應該遵循平臺約定來確定元素的tabindex focus flag設置[...]

的規範建議一些應該得到該標誌的元素,包括a元素(只要它們具有href屬性)和button元素。

因此,遵循規範建議²的用戶代理不會在默認焦點行爲方面區分abutton元素。


我不知道爲什麼鏈接的MDN頁面包含帶引號的語句(這似乎是錯誤的)。也許這是對關於tabIndex IDL屬性的規範有什麼誤解?

tabIndex IDL屬性必須反映tabindex內容屬性的值。對於可聚焦的元素,其默認值爲0,對於不可聚焦的元素,其默認值爲-1。


¹HTML 5.1是,截至目前,最新的W3C推薦標準。但以前的HTML W3C建議書和WHATWG的HTML生活標準可能並沒有對w.r.t做出不同的定義。到abutton

²這不是要求,因爲規格使用應該而不是必須

1

您引用的MDN頁面是tabindex全局屬性的定義。這不適用於button或鏈接。

事實上,tabindex可以有四個類型值:

  • 未設置時:該元件不能以編程方式聚焦,用鍵盤或用鼠標
  • -1:所述元件可以聚焦編程或用鼠標
  • 0:該元素可以通過編程集中,用鍵盤或鼠標
  • 任何值>0:不要用這個。決不。無法訪問。

鏈路(a[href]button)或其他交互元素(如表單字段)的默認值是0

的斷言,對於任何其他元素的默認值是-1是假的。這些其他元素的默認「價值」是不定義此屬性

相關問題