【问题标题】:How can I refresh parent window from an iframe?如何从 iframe 刷新父窗口?
【发布时间】:2009-01-29 17:22:23
【问题描述】:

我有一个父页面和该页面内的 iframe。父级中的链接控制在​​ iframe 中加载的页面。我想要做的是在加载 iframe 时刷新父页面。 我在 iframe 中有这个:

RefreshParent(){
    parent.location.reload();
}

<body onload="RefreshParent();">

但是,上面的代码会刷新整个父页面以及其中的 iframe,从而重新加载父页面并进入无限循环。

【问题讨论】:

  • parent.location.reload(); 不适合我。它在控制台上显示“权限被拒绝”错误。还有其他想法吗?

标签: javascript iframe


【解决方案1】:

如果不重新加载 iframe,则无法刷新父页面。

您可以做的是使用AJAX 来更新父级的内容,但这可能是相当多的工作(使用 jQuery 或 Prototype 框架会更容易)。

【讨论】:

    【解决方案2】:

    您也不需要使用 ajax 技术。您可以简单地从父页面的 iframe 中包含的页面调用父页面中的 javascript 函数。这样您就可以轻松地在父页面上执行操作。 How to refresh parent page partially from page in iframe without affecting the iframe 说明了如何。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      您不能告诉父窗口刷新并排除其自身页面的任何部分,包括其中包含的 iframe。不过,您可以使用 AJAX 技术来做到这一点。

      【讨论】:

        【解决方案4】:

        只要你在同一个域上,你就可以使用类似的东西:

        window.parent.location = window.parent.location + '?parent-updated=true'
        

        【讨论】:

          【解决方案5】:

          您需要将 iframe 设为“常规”框架,以便在刷新页面的其他部分时保留它。由于 iframe 在技术上是父框架的一部分(毕竟它是内联框架),刷新父框架也会重新加载 iframe 内容。

          【讨论】:

            【解决方案6】:

            取决于您的布局,但正如其他帖子所观察到的那样,您无法在不刷新 iframe 本身的情况下刷新父框架,因为它是页面的一部分。

            如果您不想使用 ajax,并且布局允许,一种解决方案是将父框架的内容放在 iframe 本身中。然后,您可以告诉父页面在加载 iframe 时刷新包含“父内容”的 iframe。如果您的“父”iframe 是无边框且没有滚动,那么这对用户来说都是透明的。

            您可以将此技术推广到父内容的几个 iframe,它可以比 ajax 更快、更简单地实现,除此之外,您也可以硬着头皮实现 ajax 解决方案。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2016-06-30
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多