直接想在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型的解析有關。