从标签栏中选择选项卡时,ExtJS窗口跳转到顶部

时间:2017-10-11 18:44:07

标签: extjs

关于ExtJS中标签栏的快速问题。我已经构建了包含许多控件的窗口,并且在标签栏的每个6个选项卡中都有一组控件。每个选项卡中的控件几乎相同,我没有处理更改事件的选项卡。但是,当我选择一个选项卡时,焦点会返回到对话框的顶部(滚动一个公平的方式),然后用户必须手动向下滚动到选项卡以查看控件现在可见。

更改标签是否会产生Windows refesh?如果确实如此,有什么方法可以阻止这种情况发生吗?

我需要承认,这种情况仅限于我的两台计算机中的一台。我在Azure中安装了已完成的应用程序,当我从IE或Chrome中的machine1运行它时,它运行正常。但是,如果我使用相同版本的IE和Chrome的machine2,那么就会发生跳跃和一些奇怪的事件。是否存在一些可能导致跳转的机器相关值?

谢谢

1 个答案:

答案 0 :(得分:0)

只是为了让你知道我发现了一些进一步挖掘的事情。我的两台PC之间的区别在于笔记本电脑有触摸屏。这会导致ExtJS添加特殊的滚动类来处理用户用手指滚动对话框主体。

这为我创造了一些问题。首先,跳转到顶部是由切换活动选项卡后重置滚动器引起的。重置功能可以解决问题,包括将滚动设置回顶部。有趣的是,通过切换标签页,它会导致96个scoller被重置。我无法想到为什么会出现这种情况,并怀疑它会导致完整的对话框刷新,而不仅仅是标签,我不知道为什么还需要刷新。我正在寻找一种方法来阻止这种情况发生。

我上面提到了其他一些问题。一个是第二个标签显示为空,但有滚动条。我们可以使用它们来查看正确的选项卡内容。我发现这是一个Ext JS错误。错误地,当Ext JS激活下一个选项卡时,它将选项卡放在滚动类之外(由x-scroll-scroller标记)而不是在其中。这导致它变得混乱。为了解决这个问题,我在Ext.layout.container.Container类的getRenderTarget函数中添加了一些代码。以前这只是

getRenderTarget: function() {
   return this.owner.getTargetEl();
}

我添加了一个特定的测试来查看第一个孩子是否是一个滚动条,并且就是这种情况,而是返回了滚动条。

getRenderTarget: function() {
   var me = this.owner;
   if (me.body && me.body.dom.firstChild.className == 'x-scroll-scroller')
      return me.body.dom.firstChild;
   return me.getTargetEl();
}

标签控件的父母身份现在已正确维护,我上面简要提到的其他奇怪文物消失了。

当前的比赛状态。我正在寻找停止refesh的方法,并在我找到它时更新它,但触摸屏支持肯定是不错的。

FYI。我正在使用Ext JS 6.1。