我的GWT应用程序正在添加到iframe中。我在应用程序中有一个按钮,然后应该指向另一个页面。目前,我这样做:
Window.Location.assign("http://testpage.com");
现在的问题是新页面正在加载到iframe中。有没有办法重新加载整个页面以避免产生这种影响?
我已经在stackoverflow上阅读了一些帖子,但没有一个在GWT中。我希望有人已经遇到问题并成功解决了。
感谢您的任何建议!
答案 0 :(得分:3)
我不相信GWT有一个你可以为此调用的内置函数。
JavaScript中常用的习惯就是这样
if (top.location!= self.location) { //test if in an iframe
top.location = self.location.href; //if so, break out
}
这不会直接在GWT中使用,但是您可以将其放在主html页面中,可能在应用程序其余部分加载之前的<head>
中 - 这会立即将您从iframe中取出等待应用程序加载,爆发,然后等待应用程序再次加载。
如果你真的想在GWT中运行检查,也许是因为你有时只想突破,你需要一个非常简短的JSNI方法来添加这个功能,如下所示:
public native void breakOut() /*-{
if ($wnd.top.location != $wnd.location) {
$wnd.top.location = $wnd.location.href;
}
}-*/
注意使用$ wnd来引用应用程序的窗口对象。有关编写JSNI的更多详细信息,请参阅http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsJSNI.html。不要指望此函数返回 - 它会触发浏览器卸载此页面并加载另一个页面。
答案 1 :(得分:0)
以下是基于Colin提及应该按照您的意图进行操作的自定义版本,如果您不在iframe中,它也会有效:
public static native void assignTop(String newURL) /*-{
$wnd.top.location.assign(newUrl);
}-*/
编辑:基于科林的建议简化实施。谢谢!
答案 2 :(得分:-1)
您可以使用Location.replace("http://testpage.com");
将浏览器重定向到使用GWT的其他网址。