【问题标题】:Scrolling a page to the top from an iframe (containing a gwt application)从 iframe 将页面滚动到顶部(包含 gwt 应用程序)
【发布时间】:2011-10-05 21:02:47
【问题描述】:

有一个网站有一个包含网络应用程序的 iframe。假设应用程序的高度为 1000 像素。在应用程序的底部(1000 像素)有一个按钮。如果用户按下按钮,那么应用程序会改变它的视图,并且新的长度只有 20px(20px 到 1000px 的范围因此只是白色(空白页))。

我现在的目标是,当有人按下该按钮时,浏览器应将其页面滚动到顶部(这意味着滚动发生在 iframe 之外。有谁知道如何在 gwt 中执行此操作(无需设置锚点)在包含 iframe 的页面中)?

提前多谢!

【问题讨论】:

    标签: gwt iframe uiscrollview


    【解决方案1】:

    我终于找到了解决方案。在你的 iframe 顶部设置一个锚点并调用它:

    public static native void scrollToTop()  /*-{
    
        $wnd.location.href = '#anchorName';
    
    }-*/;
    

    这也将强制父窗口(持有 iframe 的窗口)滚动到该锚点。

    【讨论】:

    • 你能扩展一下吗?你把那个功能放在哪里?你怎么称呼它,你从哪里称呼它?
    • 您可以将该函数放在进行锚点调用的类中。我建议避免跨站点操作。并非所有浏览器都支持这一点,而且看起来将来不会支持它。使用示例:developers.google.com/web-toolkit/doc/latest/…
    【解决方案2】:

    Scrolling with javascript

    尽管出于多种原因,大多数人讨厌 iframe,但您应该尽可能避免使用它们。

    【讨论】:

    • 我希望我能做到这一点:)。如果另一家公司在 iframe 中包含您的一个小应用程序,那么就没有办法...
    【解决方案3】:

    如何使用 JSNI 并在父窗口或顶部窗口中滚动?像这样的:

    public static native void scrollToTop() /*-{ $wnd.parent.scrollTo(0,0); // 或 `$wnd.top.scrollTo(0,0); }-*/;

    与 top 的组合也应该只与“window”一起使用。 $wnd 只是因为 GWT 实际上是在嵌入式 iframe 中运行的。但是我不确定如果您的代码来自不同的服务器,是否允许它们滚动父文档。

    【讨论】:

      【解决方案4】:

      调用一个滚动到包含 iframe 的页面的 div id 的 java 脚本函数怎么样?这可能吗?

      【讨论】:

        猜你喜欢
        • 2011-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-13
        相关资源
        最近更新 更多