帮我避免IE中奇怪的自动滚动

时间:2009-10-03 00:15:47

标签: javascript internet-explorer javascript-events scroll

我正在维护一个网页,需要在IE下修复一个非常奇怪的行为。该页面有一个表格,当鼠标移动时,该表格显示每个单元格的菜单。只要你的浏览器窗口至少有800px的高度,一切都运行良好。如果您使用Chrome,Opera或Firefox浏览此页面并且浏览器的窗口高度小于800px,则某些菜单将溢出窗口,用户必须向下滚动页面才能显示隐藏的选项。这是预期的行为。但是,如果您使用IE浏览页面,并且在显示菜单并且用户向下滚动页面以查看隐藏选项后,任何鼠标移动都会将页面滚动回页面顶部。

有一个鼠标悬停事件挂钩到子菜单项,此事件将显示在页面顶部的图像与另一个与子菜单上下文相关的图像交换。我虽然这个图像交换产生了这种副作用,但用“return true”替换功能代码不会改变这种行为。

我的想法已经不多了,所以任何线索都会受到赞赏。

这是网址(好车!):www.kaufmann.cl
将鼠标悬停在“Clase C”上,当在800px中查看时,浏览器将显示垂直滚动条。这就是乐趣的开始。

“stackoverflow”参数用于显示一个DIV,显示已触发的事件及其执行顺序。

编辑:在IE6到IE8中发生此问题(正常模式和兼容模式下)

3 个答案:

答案 0 :(得分:1)

你试过这个吗?

<body style="height:1000px;" ...

虽然你没有发布显示问题的IE版本,但是在我的机器上(IE8)给<BODY>一个很高的高度会清除当你发生滚动回到顶部的问题显示弹出菜单时滚动(使用键盘)。

答案 1 :(得分:0)

浏览器似乎将滚动条重置到鼠标悬停的最后一个对象的位置。当您将鼠标放在一个项目上然后向下滚动时,当前在鼠标箭头下的项目不会应用此项目的样式,但只要鼠标在任何方向上移动1个像素,滚动条就会重置,因此在向下滚动之前,鼠标再次放置在突出显示的元素上。任何人都知道绕过这种愚蠢行为的方法吗?

答案 2 :(得分:0)

尝试将return false;添加到您的onmouseover摘要中,如下所示:

<a onmouseover="MM_swapImage('cambio','', 
    '/publicador/site/artic/20090513/imag/FOTO_0520090513175050.jpg',
    '1'); return false;"></a>

(为简洁起见,删除了其他属性和内容。)