3

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

我已经在当前帖子 div 的悬停事件上使用了一些 javascript (jQuery) 让它工作但是,我注意到悬停事件仅在鼠标实际移动时触发。如果使用键盘(页面)向上/向下滚动页面,则不会触发。

(我可以注意到,例如,soup.io 已经找到了一种让它工作的方法,但我找不到他们是如何做到的)

4

3 回答 3

1

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

  1. 遍历元素,将它们的每个宽度、高度和偏移量(距屏幕左侧/顶部的距离)存储在一个数组中。
  2. 当 onScroll 事件被触发时,针对所有选定的元素检查光标的最后一个已知位置(遍历数组) - 如果光标位于其中一个元素上,则调用处理程序。

快速(不可靠)原型: http: //pastie.org/507589

于 2009-06-10T18:42:32.350 回答
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>
于 2009-06-10T17:45:29.843 回答
0

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

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

我只在 Chrome (webkit) 中测试过这个

于 2011-11-16T00:41:08.403 回答