作为将遗留应用程序移植到GWT的一部分,我们需要将现有的JSP嵌入到GWT应用程序中。这些页面中的许多都很长,导致双滚动条 - 一个用于主应用程序的窗口,另一个用于框架的内容。我想摆脱内部滚动条,只需在主窗口上有正常的浏览器滚动条。如果我可以获得渲染内容的高度(整个可滚动区域),我可以在我的框架上设置高度以匹配它,但我看不到我将获得该信息的位置。
编辑:澄清一下,GWT是主要的应用导航,并使用iframe(com.google.gwt.user.client.ui.Frame
)来嵌入旧内容。我想要做的是使页面足够大,以便封闭的框架不需要滚动条;只有主页才能滚动。如果有任何方法可以确定框架的“可滚动区域”,我可以动态调整主页面的大小以适应它。
第二次编辑:我或多或少地接受了Jack M的建议。但是我没有使用HTTPRequest,而是使用了RequestBuilder,这使得它变得简单。我想通过这种方式手动抓取HTML而不是从一开始就使用框架,但是由于必须“修复”托管页面中的URL而受到阻碍;如果用户“点击”托管的HTML,则必须修补许多相对URL的实例才能工作。使历史导航工作也有点痛苦。一旦我清理了我的代码,我会尝试将其发布到人们可以获得它的地方,因为我确信这必须是将现有应用程序迁移到GWT的人的常见用例。
答案 0 :(得分:2)
我能想到完全解决这个问题的最简单方法是不使用Frame元素,而是将HTMLPanel与HTTPRequest结合使用。这种方法增加了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会不会对你有所帮助,我想知道吗?