JavaScript isn’t the enemy of accessibility. - A11Y with lindsey
作為 Web 工程師,我們對於無障礙之於 JavaScript 很容易有一個誤解——「無障礙很麻煩,而且跟 JavaScript 是衝突的,因為螢幕閱讀器針對網頁直接忽略 JavaScript,這兩者貌似只能擇一?」
由於這種誤解,我們常會認為根本沒有必要讓 JavaScript 網頁變得更可訪問(現在這個時代哪個網頁沒有使用 JavaScript 啦,太少了QQ)。
(圖片來源:WebAIM)
根據 WebAIM 在 2014 年 1 月進行的一項調查,竟有高達 97.6% 的螢幕閱讀器使用者支持 JavaScript,絕大多數無法使用 JavaScript 的使用者,用的瀏覽器是 Firefox(可能啟用了 NoScript 附加組件)或者在 Linux 上使用 Lynx。
為那 2%~3% 螢幕閱讀器無法支援 JS 的使用者想想,我們現有能做的有哪些?
根據 WCAG: H32 技術建議,<form>
元素的屬性雖都是可選的,但還是建議一定要設置 action
與 method
,表單元素也記得加上 name
屬性(對應後端需求的欄位名稱),表單就仍可繼續它的任務。
action
屬性定義了表單數據傳輸到哪(伺服器、填寫一個網址)。
method
屬性定義了發送的 HTTP 方法(它可以是 GET 或 POST)。
註:記得為每個欄位加上 <label>
並 for="id"
指向你的欄位,或採用上面的做法,把欄位直接包起來。
<noscript>
[W3C]我們可以來看看各大網站都怎麼使用它呢?
(圖片來源:envatotuts+,Facebook 2015 年 12 月 11 日)
這個標籤的用意是,當客戶端不支援或是禁用 JavaScript, <noscript>
標籤中的內容會顯示在畫面上。它是 HTML5 新增的元素。
要注意的是:
<head>
中,元素裡面只能包含 <link>
、<style>
、<meta>
。<head>
外,
<noscript>
子代。我們在標籤中,可以使用文字告知使用者,請他打開 JavaScript 的選項,或是提供相關超連結作適當的指引。
<noscript>
<!-- 相關超連結作適當的指引 -->
<a href="https://askiebaby.github.io">相關連結</a>
</noscript>
<p>Askie' Coding Life</p>
只有一個 index.html 檔案,但是用起來卻像一個 App。- Huli
跟後端溝通後得到資料,不用導向到新頁面,而是透過 JavaScript 直接更新畫面上的內容。
想看故事理解 SPA 那就來看胡立的這篇文章。
來看使用螢幕閱讀器的使用者覺得最困擾的問題:
(圖片來源:WebAIM)
可以在問卷調查上看到的結果是,除了圖像辨識不清與語義不清很困擾之外,第二困擾的項目 Unexpected screen changes 非預期的內容變更,指的就是當 SPA 更新網站畫面時,失去焦點的關係。
在 Google Developers 複習什麼是焦點 focus,這邊是 Google 在 Udacity 針對焦點管理的教學影片。裡有很多觀念可以學習,主要是課程的 Quiz 有提供 Repo (lesson2-focus/03-managing-focus)去做練習,裡面也有成功的 Sample Code。
主要就是兩個重點:
<h1>
標籤,而每個區塊也需要一個標題。<h1>
,讓使用者知道已經更新畫面。其他文章有看到的重點
aria-live
標示。<shortdiv />