2015-09-01 106 views
1

這似乎是一個愚蠢的問題,但我解決不了的....爲什麼onmouseover工作,但不onkeydown?

爲什麼這項工作:

<div style="width:100px; height:100px; border:1px solid black;" 
     onmouseover="alert('mouseover...');" 
    > 
    </div> 

但這不(將鼠標指針移動到後的div並按(任意)鍵):

<div style="width:100px; height:100px; border:1px solid red;" 
     onkeydown="alert('keydown...');" 
    > 
    </div> 

任何想法?謝謝。

回答

4

重要事件觸發當前關注的元素,而不是鼠標當前指向的元素。

默認情況下,div元素不是交互式控件。預計他們根本不會關注。

你可以用tabindex(之後你點擊或選擇元素給它的焦點)改變它,但它幾乎總是一個標誌,你應該首先使用一個不同的元素(如textarea或一個按鈕)。

tabindex全局屬性是一個整數,指示該元素是否可以輸入焦點(可聚焦),是否應該參與順序鍵盤導航,如果是,則在什麼位置。它可能需要幾個值

0

@quentin:謝謝你的回答,它激勵我找到一個解決方案,這似乎工作,我想在這裏分享。

以上所述,首先描述的問題只是一個測試,我發現,爲什麼onkeydown不像onmouseover,並且你給了我答案。

我的實際問題是當鼠標懸停在img-element上時,如果按下shift或control鍵,我希望光標變成另一個符號。

這是我的解決方案:

  • 我第一次那麼它盤旋時
  • 的onkeydown按預期工作
  • 的元素添加到製表符「索引」
  • 然後我將焦點設置到它

,這是代碼:

<img src="path/to/img.png" 
     style="cursor:default;" 
     tabindex="500" 
     onmouseover="this.focus();" 
     onkeydown="if (event.keyCode === 16 || event.keyCode === 17) this.style.cursor='move';" 
     onkeyup="this.style.cursor='default';" 
    > 
    </img> 

我相信它遠非完美,事實上,它可能只是一個骯髒的黑客,但它是第一個想法。 任何意見將不勝感激,謝謝。

相關問題