支援無障礙功能

擴充功能可讓使用者打造理想的瀏覽體驗,根據個人能力和偏好設定量身調整。擴充功能應包含無障礙元件,讓視力障礙、聽力受損、靈巧度受限和其他身心障礙人士也能存取擴充功能,進而擴大使用者族群。

無障礙功能不僅能幫助有特殊需求的使用者,視障、靈巧度不佳和進階使用者都能透過鍵盤快速鍵受益。字幕和轉錄稿對失聰使用者來說至關重要,對語言學習者也有幫助。

使用者可能會透過多種方式與擴展功能互動。部分使用者會使用標準螢幕、鍵盤和滑鼠,也可能需要螢幕放大鏡和螢幕閱讀器。雖然無法預測使用者會用哪些工具存取擴充功能,但開發人員可以採取一些步驟,盡可能提高擴充功能的無障礙程度。

整合無障礙 UI 控制項

如果使用者無法存取使用者介面控制項,就無法使用擴充功能。如要建立無障礙 UI,最簡單的方法就是使用標準 HTML 控制項。

標準控制項

請盡可能使用標準 HTML UI 控制項。標準 HTML 控制項可透過鍵盤存取、輕鬆縮放,且螢幕閱讀器通常都能辨識。

按鈕、核取方塊、圓形按鈕、文字、選取/選項和連結的螢幕截圖和程式碼

自訂控制項中的 WAI-ARIA

Web Accessibility Initiative - Accessible Rich Internet Applications (WAI-ARIA) 是一項規格,可透過標準 DOM 屬性集,讓螢幕閱讀器存取 UI 控制項。這些屬性會向螢幕閱讀器提供網頁上控制項的功能和目前狀態資訊。

如要為自訂控制項新增 WAI-ARIA 支援,必須修改擴充功能的 DOM 元素,加入 Chrome 用於在使用者互動期間引發事件的屬性。螢幕閱讀器會回應這些事件,並說明控制項的功能。WAI-ARIA 指定的 DOM 屬性分為角色狀態屬性

<div role="toolbar">

aria-activedescendant 屬性會指定工具列收到焦點時,工具列的哪個子項會收到焦點。程式碼 tabindex="0" 指定工具列依文件順序接收焦點。

請參考以下範例工具列的完整規格:

<div role="toolbar" tabindex="0" aria-activedescendant="button1">
  <img src="buttoncut.png" role="button" alt="cut" id="button1">
  <img src="buttoncopy.png" role="button" alt="copy" id="button2">
  <img src="buttonpaste.png" role="button" alt="paste" id="button3">
</div>

將 WAI-ARIA 角色、狀態和屬性新增至控制項的 DOM 後,Google Chrome 會向螢幕閱讀器發出適當的事件。由於 WAI-ARIA 支援仍在開發階段,Google Chrome 可能不會針對每個 WAI-ARIA 屬性引發事件,螢幕閱讀器也可能無法辨識所有引發的事件。

如需在自訂控制項中新增 WAI-ARIA 控制項的快速教學課程,請參閱 Dave Raggett 在 WWW2010 的簡報

自訂控制項中的焦點

對於不使用滑鼠瀏覽網頁的使用者來說,鍵盤焦點至關重要。確認按鈕、清單方塊和功能表列等操作和導覽控制項可以接收鍵盤焦點。

根據預設,HTML DOM 中只有錨點、按鈕和表單控制項可以接收鍵盤焦點。不過,將 HTML 屬性 tabIndex 設為 0,可將 DOM 元素放在預設的 Tab 鍵順序中,讓這些元素接收鍵盤焦點。

element.tabIndex = 0
element.focus();

設定 tabIndex = -1 會從分頁標籤順序中移除元素,但仍允許元素以程式輔助方式接收鍵盤焦點。

支援鍵盤存取

擴充功能應僅使用鍵盤即可操作,讓無法使用滑鼠的使用者,以及不想使用滑鼠的進階使用者都能存取。

確認使用者不需使用滑鼠,即可在擴充功能的不同部分之間瀏覽。 確認任何彈出式視窗都可以透過鍵盤操作。使用 Chrome 鍵盤快速鍵判斷擴充功能是否可供瀏覽。

請確保使用者能輕鬆看出介面的哪個部分取得鍵盤焦點。通常焦點外框會在介面中移動,但如果過度使用 CSS,外框可能會遭到抑制或對比度降低。

搜尋按鈕上的焦點外框

一系列連結中其中一個連結的焦點外框

捷徑

最常見的鍵盤瀏覽策略是使用 Tab 鍵在擴充功能的介面中輪流切換焦點,但這不一定是簡單或有效率的做法。

簡單的 JavaScript 鍵盤處理常式可能如下所示。請注意,WAI-ARIA 屬性 aria-activedescendant 會因應使用者輸入內容而更新,反映目前啟用的工具列按鈕。

 function optionKeyEvent(event) {
  var tb = event.target;
  var buttonid;

  ENTER_KEYCODE = 13;
  RIGHT_KEYCODE = 39;
  LEFT_KEYCODE = 37;
  // Partial sample code for processing arrow keys.
  if (event.type == "keydown") {
    // Implement circular keyboard navigation within the toolbar buttons
    if (event.keyCode == ENTER_KEYCODE) {
      ExecuteButtonAction(getCurrentButtonID());
      // getCurrentButtonID defined elsewhere
    } else if (event.keyCode == event.RIGHT_KEYCODE) {
      // Change the active toolbar button to the one to the right (circular).
      var buttonid = getNextButtonID();
      // getNextButtonID defined elsewhere
      tb.setAttribute("aria-activedescendant", buttonid);
    } else if (event.keyCode == event.LEFT_KEYCODE) {
      // Change the active toolbar button to the one to the left (circular).
      var buttonid = getPrevButtonID();
      // getPrevButtonID defined elsewhere
      tb.setAttribute("aria-activedescendant", buttonid);
    } else {
      return true;
    }
    return false;
  }
}
<div role="toolbar" tabindex="0" aria-activedescendant="button1" id="tb1"
     onkeydown="return optionKeyEvent(event);"
     onkeypress="return optionKeyEvent(event);">
  <img src="buttoncut" role="button" alt="cut" id="button1">
  <img src="buttoncopy" role="button" alt="copy" id="button1">
  <img src="buttonpaste" role="button" alt="paste" id="button1">
</div>

擴充功能可以為重要的擴充功能 UI 元素建立明確的鍵盤快速鍵。如要實作這些快速鍵,請將鍵盤事件監聽器連結至控制項。在選項頁面中提供可用的快速鍵,讓使用者瞭解。

提供無障礙內容

提供無障礙內容對所有使用者來說都很重要。下列許多指南可能聽起來很熟悉,因為這些都是適用於所有網路內容的良好做法。

文字

字型選擇和文字大小會影響擴充功能內容的可讀性。有視力問題的使用者可能需要調大擴充功能的文字大小。如果使用鍵盤快速鍵,請確認這些快速鍵不會干擾 Chrome 內建的縮放快速鍵。

如要評估擴充功能 UI 的彈性,請套用200% 測試。如果文字大小或網頁縮放比例增加 200%,擴充功能是否仍可使用?

請勿將文字嵌入圖片中。使用者無法修改大小,螢幕閱讀器也無法解讀圖片。請改用樣式網頁字型,例如 Google Font API 中的字型。網頁字型可縮放至不同大小,且使用螢幕閱讀器的人員也能存取。

顏色

擴充功能的背景顏色和文字顏色之間應有足夠的對比度。使用對比度檢查工具測試背景和前景顏色是否提供適當對比度。

評估對比度時,請確認擴充功能中所有依賴圖像傳達資訊的部分都清晰可見。如要查看特定圖片在各種色弱情況下的樣貌,可以使用 Coblis - Color Blindness Simulator 等工具。

建議提供不同的色彩主題,或讓使用者自訂色彩配置,以建立更佳的對比度。

音效

如果擴充功能需要透過聲音或影片傳達資訊,請務必提供字幕或轉錄稿。如要進一步瞭解字幕,請參閱描述和加註字幕媒體計畫指南

圖片

為圖片提供資訊豐富的替代文字。

<img src="img.jpg" alt="The logo for the extension">

使用替代文字說明圖片用途,而非圖片內容的字面描述。間隔圖片或純裝飾圖片應使用空白的 "" 替代文字,或從 HTML 中完全移除,並放置在 CSS 中。

如果擴充功能必須使用圖片中的文字,請在替代文字中加入圖片文字。如需相關資源,建議參閱 WebAIM 關於適當替代文字的文章

瞭解詳情

如要進一步瞭解 Chrome 無障礙功能,請查看 A11ycasts 頻道,並詳閱 Chromium 無障礙技術文件