对于我正在开发的GWT应用程序,我需要以编程方式更改浏览器窗口的高度。有没有办法在GWT中做到这一点?我尝试了以下内容:
public static native void setWindowHeight(final int height) /*-{
$wnd.resizeTo($wnd.outerWidth, height);
}-*/;
但这不只是改变高度,它也与宽度混淆。此外,我想在GWT Java代码中保留此调整大小功能(这使用JSNI)。
编辑:这实际上不会干扰大多数浏览器的宽度 - 它会调整到之前的宽度和新高度。虽然由于某种原因,它确实在我的Google托管模式浏览器中“混乱”了宽度。
我实际上更喜欢能够调整浏览器客户区域的内容(即排除浏览器的工具栏和滚动条等),而不是窗口本身。
例如,com.google.gwt.user.client.Window具有以下方法:getClientWidth()和getClientHeight()。我想要的东西相当于setClientWidth(int width)和setClientHeight(int height)(请记住这些setter实际上并不存在)。
答案 0 :(得分:4)
据我所知,你必须使用JSNI来做这些事情。 Window.scrollTo(...)是另一种方法,它不会通过GWT窗口提供。
你可以做的是编写自己的扩展窗口,扩展GWT窗口。
例如:
public class ExtendedWindow extends Window {
public static native void resizeTo(final int width, final int height) /*-{
$wnd.resizeTo(width, height);
}-*/;
public static native void scrollTo(final int xpos, final int ypos) /*-{
$wnd.scrollTo(xpos, ypos);
}-*/;
// ...etc...
}
然后在需要这些扩展行为时使用ExtendedWindow
。
我不相信setClientHeight()
等可用,因为这不能通过Javascript获得。但我确定您可以使用resizeTo(...)
进行模拟,首先先计算outerHeight
与clientHeight
之间的差异,然后在更改clientHeight
时保持差异。< / p>
我希望这有用。