我可以检测到焦点的来源吗? (Javascript,jQuery)

快速提问 – 是否可以通过鼠标点击或焦点事件的标签来检测焦点是否来自?

我想如果没有,我将不得不在同一元素上使用单击手柄来确定源,但我更喜欢焦点事件的一种方式。

谢谢

Gausie

可能无法100%工作,但如果没有直接方式,那么你不能只使用Mouseover并检测它吗? 该人将鼠标hover在控件上以选择它(?)

我非常有信心焦点事件不会影响焦点的排序方式(window.focus,key,click …)。

但是在单击的情况下,您可以检测到鼠标单击。 您还可以检测键盘事件(更多信息请参见http://www.quirksmode.org/js/keys.html )。

用鼠标位置怎么样?

在事件处理程序中,将当前鼠标位置与控件区域进行比较。 如果坐标落在控件区域内,则不滚动。

当然,这不是一个完美的解决方案,因为它们可以hover元素,然后在不点击的情况下选项卡。 但既然你试图减少任何迷失方向,这实际上可能是好的副作用。

使用鼠标位置时,我喜欢使用quirksmode.org中的脚本。 我认为Jquery也可以为它提供一些function。

尝试获取keyCode – 这是一篇文章的链接,详细介绍了如何使用。 底部的评论也可能有用。

http://www.geekpedia.com/tutorial138_Get-key-press-event-using-JavaScript.html

这是文章中的代码。 它没有显示它,但tab的keyCode是9。

  

如果有人有兴趣,我就是这样做的:

 $('input').focus(function(){ $this = $(this); $this.parents('tr').css('background-color','yellow'); if($this.attr('click')!='true'){ $('body').scrollTop($this.offset().top-($(window).height()/2)); } }).blur(function(){ $(this).parents('tr').css('background-color','transparent'); }).mouseover(function(){ $(this).attr('click','true'); }).mouseout(function(){ $(this).removeAttr('click'); });