从iframe重新加载页面

时间:2012-01-18 14:06:23

标签: jquery iframe fancybox

我正在使用Fancybox和Zend。希望以下是明确的。

在www.example.com/template/edit/id/3上我有jQuery UI标签。可以通过锚点直接到达。例如。 www.example.com/template/edit/id/3#tabs-2

在#tabs-2上我有一些元素,无论它究竟是什么。您可以创建或编辑它们。这个元素有一个自己的控制器,所以为了编辑它们,你可以调用/ elements / edit / id / 44。目前,我正在使用Fancybox的Layer中进行此操作。我正在使用Fancybox的Iframe功能。

因此,如果您在/ template / edit上并单击元素的编辑按钮,则会打开一个图层,其中包含一个加载/元素/编辑的iframe。

因此,如果您现在更改元素并单击“保存”,我希望图层自动关闭并重新加载。

Fancybox提供了一个选项,用于指定关闭时应该执行的操作。目前我得到了这样的话:

'onClosed'          :  function() {window.location.reload();}

这实际上会重新加载顶部窗口而不是iframe。此外,还有可能通过JS关闭Fancybox。我这样做是通过设置一个触发它的视图变量,例如:

<?php if($this->close): ?>
    <script type="text/javascript">
    parent.$.fancybox.close();
    </script>
<?php endif ?>

所以,如果保存成功,我设置$ this-&gt; view-&gt; close = true并且图层被clsoed触发我的JS。

这很好用。我现在的问题是在我的网址中使用#tabs-2进行重新加载。

当然,我可以获取网址,从我输入的用户等其他锚点清理它,并构建我设置到窗口位置的网址,但不知怎的,我想,必须有一个更简单的解决方案。

E.g。将浏览器的URL设置为#tabs-2而不重新加载,但这听起来也不是很好。重新加载很容易,但是锚点非常棘手。

1 个答案:

答案 0 :(得分:1)

window.location.href = "#tabs-2"

也许:

<script type="text/javascript">
    parent.$.fancybox.close();
    window.location.href = "#tabs-2" //Add the anchor, won't stack. Will replace existing anchor
    window.location.reload() //Refresh the screen, maintain anchor
</script>