Javascript 为什么onmouseover在工作,而不是onkeydown?

Javascript 为什么onmouseover在工作,而不是onkeydown?,javascript,html,events,Javascript,Html,Events,这对我来说似乎是个愚蠢的问题,但我无法解决它 为什么这样做有效: <div style="width:100px; height:100px; border:1px solid black;" onmouseover="alert('mouseover...');" > </div> 但这不是(将鼠标指针移动到div字段并按(任意)键后): 有什么想法吗?谢谢。关键事件在当前保持焦点的元素上触发,而不是鼠标当前指向的元素 默认情况下,d

这对我来说似乎是个愚蠢的问题,但我无法解决它

为什么这样做有效:

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

但这不是(将鼠标指针移动到div字段并按(任意)键后):



有什么想法吗?谢谢。

关键事件在当前保持焦点的元素上触发,而不是鼠标当前指向的元素

默认情况下,div元素不是交互式控件。人们根本不指望他们能抓住焦点

您可以使用更改(之后单击或标记元素以使其具有焦点),但这几乎总是一个标志,表明您首先应该使用不同的元素(例如文本区域或按钮)

tabindex全局属性是一个整数,指示元素是否可以获取输入焦点(可聚焦),是否应该参与顺序键盘导航,如果是,在什么位置。它可能需要几个值


关键事件在当前保持焦点的元素上触发,而不是鼠标当前指向的元素

默认情况下,div元素不是交互式控件。人们根本不指望他们能抓住焦点

您可以使用更改(之后单击或标记元素以使其具有焦点),但这几乎总是一个标志,表明您首先应该使用不同的元素(例如文本区域或按钮)

tabindex全局属性是一个整数,指示元素是否可以获取输入焦点(可聚焦),是否应该参与顺序键盘导航,如果是,在什么位置。它可能需要几个值


@昆汀:谢谢你的回答,它启发了我找到了一个解决方案,这似乎是可行的,我想在这里分享

上面第一个描述的问题只是一个测试,我想知道为什么onkeydown的行为不像onmouseover,你给了我答案

我的实际问题是,如果按下shift键或control键,当光标悬停在img元素上时,我希望光标变为另一个符号

这是我的解决方案:

  • 我首先将元素添加到选项卡-“索引”
  • 然后我在悬停它时将焦点设置为它
  • 然后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>

我相信这还远远不够完美,事实上,这可能只是一个肮脏的黑客,但这是第一个想法。
如果您有任何意见,我们将不胜感激。

@quentin:谢谢您的回答,它启发了我找到了一个似乎可行的解决方案,我想在这里分享

上面第一个描述的问题只是一个测试,我想知道为什么onkeydown的行为不像onmouseover,你给了我答案

我的实际问题是,如果按下shift键或control键,当光标悬停在img元素上时,我希望光标变为另一个符号

这是我的解决方案:

  • 我首先将元素添加到选项卡-“索引”
  • 然后我在悬停它时将焦点设置为它
  • 然后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>

我相信这还远远不够完美,事实上,这可能只是一个肮脏的黑客,但这是第一个想法。 如有任何意见,将不胜感激,谢谢