2012-04-19 63 views
5

我發現了jQuery click事件的奇怪行爲。如果我們使用的是鍵盤導航(輔助功能的情況下),點擊是由輸入或空間(這取決於我們使用的HTML元素)啓動。jQuery鼠標的.click()通過鍵盤導航啓動

有上的jsfiddle一個測試頁面,你可以嘗試用鍵盤在結果框架導航,然後單擊是在不同情況下推出:

http://jsfiddle.net/DCXhN/9/

在jQuery的手冊中,我發現下面的說明click event:

「當鼠標指針位於元素上方並且鼠標按鈕被按下並釋放時,單擊事件發送到元素,任何HTML元素都可以接收此事件。

這是正常的嗎?如果攔截鼠標點擊事件是正常行爲,如何攔截?

+0

是的,類似於使用tab導航然後按ENTER的鍵盤交互將觸發單擊事件...因爲它是點擊 – devnull69 2012-04-19 13:08:15

+0

Wow的mousedown/mouseup行爲的鍵盤快捷鍵。如果這個邏輯如果在jQuery或瀏覽器級別定義? – 2012-04-19 13:13:59

+0

在該示例中(IE9,FF,Ch,Sa),Windows上的所有主流瀏覽器都會默認執行此操作。此外,我將事件處理從jQuery改爲純javascript,並且行爲相同,所以它應該是瀏覽器度量 – 2012-04-19 13:27:58

回答

8

是的,這是正常的。 JQuery文檔是正確的,但有點不完整。還有更多的細節WC3 site - 如:

注:爲了獲得最大的可訪問性,鼓勵內容作者定義的激活行爲時自定義控件,而不是其他的定位設備的事件類型,如鼠標按下,即可使用事件類型或mouseup,這是更具體的設備。儘管點擊事件類型起源於指針設備(例如鼠標),但隨後的實現增強已將其擴展到該關聯以外,並且其可被認爲是用於元素激活的設備無關事件類型。

或者,換一種說法,對於一些元素,點擊()本質上是一個邏輯事件,而不是特定於設備的事件。

如果你真的只想迴應鼠標輸入,你可以使用mousedown/up事件 - 但要記住,你將不得不讓你的UI鍵盤單獨訪問(例如使用keydown/press/etc事件提供相當於鍵盤)。