当YUI上下文菜单出现时,表格tbody的滚动条意外地在IE8,IE9上滚动

时间:2012-12-09 22:51:09

标签: internet-explorer scrollbar contextmenu scrolltop yui2

我在IE8上发现了一个奇怪的行为。带有YUI contextmenu和可滚动表的IE9,非常感谢有人能告诉我如何解决以下问题:

参考http://jsfiddle.net/nguanon/yL5Sa/ 在IE8&上使tbody可滚动时IE9,在滚动条滚动到底部后,右键单击一行以显示上下文菜单,观察滚动条自动跳转到顶部。

代码取自YUI示例,添加了以下CSS:

table#dataset thead {
 display: block;
}
table#dataset tbody {
 display: block;
 overflow: auto;
 max-height: 200px;
}
</style>
<!--[if IE]>
<style>
table#dataset tbody {
 position: absolute;
}
</style>
<![endif]-->

使用YUI 2.6.0,跳过顶部后,滚动条会回到我们点击其他区域时的位置(隐藏上下文菜单) 使用YUI 2.9.0,滚动条跳到顶部并保持在那里。 这两种方式都不是良好的用户体验,我想了解为什么它会跳跃,如果我们可以阻止它。

调试显示,一旦执行了上下文菜单的setFocus,滚动条会自动跳转。从menu.js中的实现,还有关于此视口跳转的注释,但似乎计时器没有修复此行为:

/ * 通过计时器设置焦点可以修复Firefox,IE中的竞争条件 和浏览器视口跳转到的Opera 定位并关注菜单。 * /

在搜索此问题的解决方案时,我还在https://www.redhat.com/archives/freeipa-devel/2012-July/msg00240.html看到了类似情况,其中保存了当前滚动条位置并将其设置回稍后的位置。但是,我只是想看看我们是否可以阻止跳跃。我认为这是YUI特定的,并且已经在YUI网站上提出了问题,但是如果有任何SO用户体验YUI 2代码并且知道答案,那将非常感激。

1 个答案:

答案 0 :(得分:0)

不幸的是,YUI2即将结束,因此不会发布任何版本。但是,有些问题有个别补丁,通常可以在错误报告的故障单中找到它们。许多剩余的问题以“无法修复”状态关闭,但它们仍然存档并且可以进行检查。查找与滚动相关的DataTable问题提供了this list。希望答案就在那里。