2010-10-27 102 views
2

我正在一個需要升級才能通過標準合規性的大型網站(1600多頁)上工作。因此,對於每個OnClick來說,必須有標準,一個OnKeyPress處理程序,以便不使用鼠標的人仍然可以訪問該內容。OnClick和OnKeyPress符合標準

一些標籤有一個onclick JavaScript處理程序。 EG:

<a onclick="doSumat();"> 

是以下跨瀏覽器的,工作的javascript:

<a onclick="doSumat();" onkeypress="this.onclick();" > 

將它在所有瀏覽器可靠地工作,並將其結果是一樣的鼠標點擊使用屏幕閱讀器的人?

+0

當將一個'onkeypress'事件可能是一個'span'元素上設置時火? – Harmen 2010-10-27 10:41:48

+0

好吧,理想情況下,您的Javascript調用應該以分號結束 - 即'doSumat(); - 但這與問題無關。 – Spudley 2010-10-27 11:41:46

+0

我將編輯,我馬虎的打字。 – awrigley 2010-10-27 12:11:43

回答

3

在這種情況下,爲什麼不使用onclick和onkeypress處理函數調用doSumat();

如果您需要this上下文,那麼您需要使用doSumat.call(this);,但仍然可以將它放在兩個處理程序中。

<a onclick="doSumat();" onkeypress="doSumat();"> 

1600頁,我想你想尋找一些簡單的追加到每一個元件都具有onclick處理程序,但不應該是一個更復雜的定義規則,盲目從onclick複製一切聲明到onkeypress表達式。

4

W3C - SCR35:通過使用錨點和按鈕的onclick事件使鍵盤可訪問。

雖然「onclick」聽起來像是綁定到鼠標,但onclick事件實際上是映射到鏈接或按鈕的默認操作。當用戶用鼠標單擊元素時會發生默認操作,但當用戶關注元素並命中Enter或空格,以及何時通過可訪問性API觸發元素時,也會發生該默認操作。

來源http://www.w3.org/TR/WCAG20-TECHS/SCR35

+0

實際上,加載頁面後,當我開始輸入時只需點擊Tab鍵即可到達輸入字段,除非我有一個onkeypress處理程序,否則腳本將不會被觸發。 – raratiru 2016-01-02 19:22:59