【问题标题】:GWT: how do I scroll to the bottom of the page?GWT:如何滚动到页面底部?
【发布时间】:2013-01-19 06:30:12
【问题描述】:

在我的页面上,我有一个默认隐藏的面板。我可以在必要时通过myPanel.setVisible(true) 展示它。在此之后,窗口的高度增加并出现窗口滚动条。

问题是窗口不会自动滚动到底部,这是一种理想的行为。我该如何解决?我只想将页面滚动到底部。

我知道Window.scrollTo (LEFT, TOP) 可以帮助我。但问题是我不知道如何计算页面相对于顶部的高度——我需要提供给这个方法的第二个参数。我真的尝试了很多方法:

Window.getClientHeight();
Document.get().getScrollHeight();
Document.get().getBody().getOffsetHeight();
Document.get().getBody().getAbsoluteBottom();

在隐藏面板变得可见后,它们中的前两个不会改变它们的值。第二对给了我 0 和 8 (???) 值。

那么我该如何解决我的问题呢?

ps 如果情况有点不同,并且我有一个带有滚动条的 div,而不是窗口滚动条,是否可以通过编程方式将其滚动到底部?

【问题讨论】:

    标签: java gwt scrollbar


    【解决方案1】:

    您可以使用setVerticalScrollPostion API 并设置滚动的位置

    【讨论】:

      【解决方案2】:

      它是简单的 Panel 还是它的某个子类。

      无论如何,请先尝试:

      int top = myPanel.getAbsoluteTop();
      

      然后滚动到某个与顶部聚合的值。

      来自 API:

      public int getAbsoluteTop()

      获取对象的绝对顶部位置(以像素为单位),从浏览器窗口的客户区开始测量。

      【讨论】:

        【解决方案3】:

        要向下滚动文档,您应该使用 Window 对象中的 scrollTo 方法,即:

        Window.scrollTo(0, Window.getScrollTop() + Window.getClientHeight());
        

        【讨论】:

          【解决方案4】:

          您实际上不需要知道页面的大小来滚动到它的底部。只需使用

          Window.scrollTo(0, Integer.MAX_VALUE);

          至少这对我一直有效。

          【讨论】:

            【解决方案5】:

            如果你愿意,你可以创建一个带有 id 的小部件句柄。 例如:widget.getElement().setId("scrollPanel");

            然后您可以使用Document.get().getElementById("scrollPanelFooter").scrollIntoView(); 滚动小部件上的视图 它更简单!

            【讨论】:

            • 对不起,我纠正自己:widget.getElement().setId("scrollHandle"); Document.get().getElementById("scrollHandle").scrollIntoView(); scrollHandle 是小部件 ID 的名称。
            • 您可以编辑自己的帖子...在您的帖子中查找“编辑”并点击它。
            猜你喜欢
            • 1970-01-01
            • 2011-05-14
            • 2012-07-27
            • 1970-01-01
            • 1970-01-01
            • 2010-12-25
            • 1970-01-01
            相关资源
            最近更新 更多