在div監聽鍵盤事件獲取不到的問題


在給如div等元素綁定鍵盤事件(如keydown)時, 會發現綁定是失效的。

解決方法:

給當前元素增加 tabindex 屬性:

原理:

div等非輸入性質的元素(與其對應的可輸入性元素有input, textarea), 是不可被聚焦的。 所以無法監聽其的鍵盤事件。

而通過增加 tabindex 屬性,可以指定該元素可觸焦。

關於tabindex(引自MDN):

tabindex 全局屬性 是個整數,表示元素(如果可聚焦)是否能夠接受輸入焦點。 如果它應該參與鍵盤序列導航,那么就是它的位置。

它可以設為多種值:

tabindex=負值 (通常是tabindex=“-1”),表示元素是可聚焦的,但是不能通過鍵盤導航來訪問到該元素,用JS做頁面小組件內部鍵盤導航的時候非常有用。

tabindex="0" ,表示元素是可聚焦的,並且可以通過鍵盤導航來聚焦到該元素,它的相對順序是當前處於的DOM結構來決定的。

tabindex=正值,表示元素是可聚焦的,並且可以通過鍵盤導航來訪問到該元素;它的相對順序按照tabindex 的數值遞增而滯后獲焦。如果多個元素擁有相同的 tabindex,它們的相對順序按照他們在當前DOM中的先后順序決定。

根據鍵盤序列導航的順序,值為 0 、非法值、或者沒有 tabindex 值的元素應該放置在 tabindex 值為正值的元素后面。

如果我們在

上設置了 tabindex 屬性,它的子元素內容不能使用箭頭鍵來滾動,除非我們在內容上也設置 tabindex。注:tabindex 的最大值不應超過 32767。如果沒有指定,它的默認值為 -1。

 

相關連接:

https://developer.mozilla.org/zh-CN/docs/Web/HTML/Global_attributes/tabindex;

https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLElement/tabIndex

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM