div的keydown事件無效的原因及解決方案、tabindex屬性的作用


  直接想在div上監聽鍵盤事件是不行的,但是比如input那些是可以的,為什么?等會解釋

一、解決方案

  如果需要在div上監聽鍵盤事件怎么辦呢?

  其實也很簡單,只需要在需要監聽 keydown 事件的 div 的屬性中加上 tabIndex=0 即可,即:

<div tabindex="0" οnkeydοwn="alert('keydown');">...</div>

二、tabindex屬性的作用

  當使用鍵盤時,tabindex是個關鍵因素,它用來定位html元素

  tabindex有三個值:0 ,-1, 以及X(X里32767是界點,稍后說明)

  原本在Html中,只有鏈接a和表單元素可以被鍵盤訪問(即使是a也必須加上href屬性才可以),但是aria允許tabindex指定給任何html元素

  當tabindex=0時,該元素可以用tab鍵獲取焦點,且訪問的順序是按照元素在文檔中的順序來focus,即使采用了浮動改變了頁面中顯示的順序,依然是按照html文檔中的順序來定位

  當tabindex=-1時,該元素用tab鍵獲取不到焦點,但是可以通過js獲取,這樣就便於我們通過js設置上下左右鍵的響應事件來focus,在widget內部可以用到。

  當tabindex>=1時,該元素可以用tab鍵獲取焦點,而且優先級大於tabindex=0;不過在tabindex>=1時,數字越小,越先定位到。

  在IE中,tabindex范圍在1到32767之間(包括32767),在FF, Chrome無限制,不過一旦超出32768,順序跟tabindex=0時一樣。這個估計跟各個瀏覽器對int型的解析有關。


免責聲明!

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



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