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

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

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

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

我能想到完全解决这个问题的最简单方法是不使用Frame元素,而是使用HTMLPanel和HTTPRequest 。 这种方法增加了RPC调用的复杂性,但HTMLPanel是一个简单的

,其中包含内容。 因此,它可以扩展和/或与您的JSP内容联系。 最终结果将是两个页面的无缝集成。

Google自己的JSON示例提供了一个发出HTTP请求的好例子。

阅读本文,它很可能是您问题的解决方案

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

将GWT嵌入旧JSP可能有意义吗? 在JSP上的某处放置

,然后导入JS。

不清楚你是如何将JSP嵌入GWT的。

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