我目前正在开发一个GWT项目,我在我的应用程序中的iframe中显示一个HTML文件。这个HTML文件实际上是在显示时写入的,我希望能够重新加载框架,以便对HTML文件所做的更改反映在屏幕上。我能够以两种不同的方式执行这两种方式,在开发模式下运行时都可以工作,但是在部署项目时似乎都不起作用。
我尝试的第一种方法是将框架的URL设置为自身:
frame.setUrl(frame.getUrl());
我尝试使用JSNI的第二种方法:
public native void refresh() /*-{
if($doc.getElementById('__reportFrame') != null) {
$doc.getElementById('__reportFrame').src =
$doc.getElementById('__reportFrame').src;
}
}-*/;
部署时,框架将显示在一个窗口中,当文件写入完成后,将调用其中一个刷新方法,框架将刷新以包含完成的HTML文件。当我部署时,对刷新的调用不会重新加载帧的内容,但是如果我调出帧的上下文菜单(在Firefox中),然后进入“此帧”,然后单击“重新加载”,它会成功将帧重新加载到包含完成的HTML文件。我已经在多个版本的Firefox上测试了这个,没有任何运气。
有没有人有任何建议?为什么从一种模式到另一种模式的行为会有所不同?
感谢。
答案 0 :(得分:0)
您可以使用一些JSNI来执行此操作。创建一个方法,如
protected native void reloadIFrame(Element iframeEl)/ - { iframeEl.contentWindow.location.reload(真); } - /;
Then call it with your iFrame element
所以你发布的两次问题已经在这里回复了 http://groups.google.com/group/google-web-toolkit/browse_thread/thread/64aa7712890652d3
答案 1 :(得分:0)
我们有一个要求,其中一个GWT应用程序(父)在iframe中加载了另一个GWT应用程序(子)。子应用程序在执行某些数据库操作后必须刷新iframe。我们使用JSNI来完成同样的事情。
private native void refreshChild(String url)/*-{
$wnd.location.href=url;
}-*/
如果需要将子框架重定向到另一个网页,则可以相应地修改该URL。 我们确实尝试使用reload()方法,但它没有帮助。 上面的代码当然需要在子应用程序中编写。