我在带有 YUI 上下文菜单和可滚动表的 IE8 和 IE9 上看到了一个奇怪的行为,如果有人能告诉我如何解决以下问题,我将不胜感激:
参考http://jsfiddle.net/nguanon/yL5Sa/ 在IE8&IE9上让tbody可滚动时,滚动条滚动到底部后,右击一行出现contextmenu,观察滚动条自动跳到顶部.
代码取自 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 代码并知道答案,那将不胜感激。