1

我目前正在处理一个 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 上对此进行了测试,但没有任何运气。

有没有人有什么建议?为什么行为会从一种模式到另一种模式不同?

谢谢。

4

2 回答 2

0

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

您可以使用一些 JSNI 来执行此操作。创建一个方法,例如

受保护的本机 void reloadIFrame(Element iframeEl) / -{ iframeEl.contentWindow.location.reload(true); }- /;

 Then call it with your iFrame element

所以你发布两次的问题已经在这里得到回答 http://groups.google.com/group/google-web-toolkit/browse_thread/thread/64aa7712890652d3

于 2012-06-14T15:59:36.730 回答
0

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

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

如果子框架需要重定向到另一个网页,可以相应地修改url。我们确实尝试使用 reload() 方法,但没有帮助。上面这段代码,当然需要写在子应用中。

于 2015-03-04T05:21:31.740 回答