在GWT中重新加载iframe

在GWT中重新加载iframe,gwt,iframe,refresh,frame,reload,Gwt,Iframe,Refresh,Frame,Reload,我目前正在从事一个GWT项目,在该项目中,我将在应用程序的iframe中显示一个HTML文件。这个HTML文件实际上是在显示时写入的,我希望能够重新加载框架,以便对HTML文件所做的更改反映在屏幕上。我可以用两种不同的方法来实现这一点,这两种方法在开发模式下运行时都能起作用,但是在部署项目时两者似乎都不起作用 我尝试的第一种方法是将框架的URL设置为自身: frame.setUrl(frame.getUrl()); 我尝试使用JSNI的第二种方法: public native void ref

我目前正在从事一个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中),然后进入“This frame”,并单击“reload”,它会成功地重新加载框架以包含完成的HTML文件。我已经在Firefox的多个版本上进行了测试,但没有任何运气

有人有什么建议吗?为什么不同模式的行为会有所不同


谢谢。

哇,谷歌的搜索速度真快^^

您可以使用一些JSNI来实现这一点。创建一个方法,例如

受保护的本机void重载iframe(元素iframeEl)/-{ iframeEl.contentWindow.location.reload(true);}-/

所以你两次发帖的问题已经在这里得到了回答

我们有一个要求,一个GWT应用程序(父应用程序)在iframe中加载另一个GWT应用程序(子应用程序)。子应用程序必须在执行某些DB操作后刷新iframe。我们使用JSNI来完成同样的任务

private native void refreshChild(String url)/*-{
 $wnd.location.href=url; 
}-*/
在这种情况下,如果子框架需要重定向到另一个网页,则可以相应地修改url。 我们确实尝试使用reload()方法,但没有任何帮助。 当然,上面的代码需要在子应用程序中编写

private native void refreshChild(String url)/*-{
 $wnd.location.href=url; 
}-*/