如何摆脱GWT app内部框架上的双滚动条

时间:2009-02-26 19:22:19

标签: java javascript css gwt scroll

作为将遗留应用程序移植到GWT的一部分,我们需要将现有的JSP嵌入到GWT应用程序中。这些页面中的许多都很长,导致双滚动条 - 一个用于主应用程序的窗口,另一个用于框架的内容。我想摆脱内部滚动条,只需在主窗口上有正常的浏览器滚动条。如果我可以获得渲染内容的高度(整个可滚动区域),我可以在我的框架上设置高度以匹配它,但我看不到我将获得该信息的位置。

编辑:澄清一下,GWT是主要的应用导航,并使用iframe(com.google.gwt.user.client.ui.Frame)来嵌入旧内容。我想要做的是使页面足够大,以便封闭的框架不需要滚动条;只有主页才能滚动。如果有任何方法可以确定框架的“可滚动区域”,我可以动态调整主页面的大小以适应它。

第二次编辑:我或多或少地接受了Jack M的建议。但是我没有使用HTTPRequest,而是使用了RequestBuilder,这使得它变得简单。我想通过这种方式手动抓取HTML而不是从一开始就使用框架,但是由于必须“修复”托管页面中的URL而受到阻碍;如果用户“点击”托管的HTML,则必须修补许多相对URL的实例才能工作。使历史导航工作也有点痛苦。一旦我清理了我的代码,我会尝试将其发布到人们可以获得它的地方,因为我确信这必须是将现有应用程序迁移到GWT的人的常见用例。

3 个答案:

答案 0 :(得分:2)

我能想到完全解决这个问题的最简单方法是不使用Frame元素,而是将HTMLPanelHTTPRequest结合使用。这种方法增加了RPC调用的复杂性,但HTMLPanel是一个简单的<div>,其中包含内容。因此,它可以扩展和/或与您的JSP内容联系。最终结果将是两页的无缝集成。

Google自己的example on JSON提供了发出HTTP请求的好例子。

答案 1 :(得分:1)

Read this, it will most likely be a solution to your problem

它解释了如何获得窗口的大小并管理它在JavaScript中的滚动。

答案 2 :(得分:0)

将GWT嵌入旧JSP可能有意义吗?放置&lt; div id =“for.gwt”/&gt;在JSP上的某个地方,导入JS。

目前还不清楚你是如何将JSP嵌入GWT的,抱歉。

框架中的document.body.clientHeight会不会对你有所帮助,我想知道吗?