【问题标题】:Reloading an iframe in GWT在 GWT 中重新加载 iframe
【发布时间】:2012-06-17 14:55:53
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: gwt iframe refresh frame reload


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      哇,google 的搜索速度真的很快^^

      您可以使用一些 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-05
        • 2014-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-13
        • 2019-06-10
        • 2023-03-31
        相关资源
        最近更新 更多