任何人都知道使用键盘滚动时触发的鼠标悬停技巧/替代品

时间:2009-06-10 15:17:07

标签: javascript mouse hover

当用户滚动页面时,当光标从一个div移动到另一个div时,是否存在可以触发函数的悬停方法的替代方法或技巧。

我有那种让它在当前post div的悬停事件中使用一些javascript(jQuery)。但是,我注意到只有在实际移动鼠标时才会触发悬停事件。如果使用键盘(页面)向上/向下滚动页面,则不会触发。

(我可以注意到,例如,soup.io找到了一种方法来实现这一点,但我找不到他们是如何做到的)

3 个答案:

答案 0 :(得分:1)

不幸的是,这很复杂;您无法再依赖 onMouseOver 事件 - 滚动页面时触发的唯一事件是 onScroll 。涉及的步骤:

  1. 浏览元素,将每个宽度,高度和偏移(距屏幕左侧/顶部的距离)存储在一个数组中。
  2. 触发onScroll事件时,检查光标对所有选定元素的最后已知位置(通过数组) - 如果光标位于其中一个元素上,则调用处理程序。
  3. 快速(不可靠)原型:http://pastie.org/507589

答案 1 :(得分:0)

你有样品吗?我猜测页面上元素的布局阻止了 mouseover 事件。下面我的简单示例可以按照您的描述进行操作。将光标放在页面顶部并使用键盘导航,将触发鼠标悬停事件。

<html>
<body>
<script>
function log(text)
{
    document.getElementById('logger').value += text + "\n";
}
</script>

<div id="div1" style="background: yellow; height: 100px;margin-top: 100px" onmouseover="log('mouseover div1');">
div1
</div>
<textarea id="logger" cols="60" rows="12" style="float:right;"></textarea>
<div id="div2" style="background: red; height: 1000px" onmouseover="log('mouseover div2');">
div2
</div>
</body>
</html>

答案 2 :(得分:0)

您正在寻找鼠标滚轮事件。

document.getElementById('myDiv').onmousewheel = function() {
  alert('You win!');
  alert('Seriously! It's just like that');
};

我只在Chrome(webkit)

中对此进行了测试