1

我在带有 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 代码并知道答案,那将不胜感激。

4

1 回答 1

0

不幸的是,YUI2 已经到了生命的尽头,所以不会发布任何版本。但是,有些问题有单独的补丁,通常可以在错误报告的票证中找到。许多剩余的问题以“无法修复”状态关闭,但它们仍被归档并可以检查。寻找与滚动相关的 DataTable 问题提供了此列表。希望答案就在那里。

于 2012-12-10T16:22:57.177 回答