手頭上的案子需要通過無障礙(A+等級)檢測,前天突然覺得檢測的時機到了,
跟同事要了FreeGo 3.1.1版,點擊兩下,輸入網址,按下開始....
第一次跑完,總計5000+個錯誤,先將一些alt標記上去後,還有3894個錯誤。
3894?什麼東西可以有3894個錯誤.....
看似很恐怖,仔細一看全部的原因都在一項,
「H209002 確保事件的啟發不要求一定得使用滑鼠」,這是什麼意思?
其實就是除了滑鼠以外要可以用鍵盤操作,他判斷的標準是:
1. 輸出的HTML內有onmousedown,就必須有onkeydown
2. 輸出的HTML內有onmouseup,就必須有onkeyup
3. 輸出的HTML內有onclick,就必須有onkeypress
3. 輸出的HTML內有onmouseover,就必須有onfocus
3. 輸出的HTML內有onmouseout,就必須有onblur
瞭解他的原因以後....真是對3894個錯誤完全沒有頭緒。
-------------------------------------------
找了一下資料發現,因為我的menu選單使用asp.net內建的menu控制項,
而Menu控制項在輸出到HTML時,會產生onmouseover、onmouseout、onkeyup三個事件,
所以必須要加入對應的三個事件才可以通過程式的檢測。
所以我當時的想法是:
1. 一定可以加入這些很一般的事情。
2. 如果不可以,我就用jquery把他加上去。
事實證明,我失敗了 XD
首先,第一個想法:
A. Menu控制項若用Attributes.add("onfocus","")的方式加入事件,只能加到最外層,也就是Menu自己,下面的子層不會改變。
B. 若是使用樣版的方式,雖然可以把類似menulist使用label等控制項取代掉,但去觀察產出的HTML,onmouseover等事件其實是加在tr裡面,所以即便在樣版的label上加了onfocus等事件,還是無用。
接下來,第二個想法:
A. jquery等javascript皆可以正確的將onfocus事件加上去,但是HTML一開始輸出後,即便利用JS動態的加上這些事件,操作起來也都有效果,但輸出的HTML並不會隨之改變,也就是說那些動態的東西,監測程式也無法監測到,所以無效。
所以本篇只有一個重點,就是你要過無障礙A+,而你有用ASPNET的Menu,經過我兩天的測試,我認為無法通過,所以後來只好選擇用jquery手工打造Menu了。(也可能可以,但是我沒找到方法)
沒有留言:
張貼留言