Я использую Fancybox и Zend. Надеюсь, что следующее ясно.Обновить страницу из iframe
На www.example.com/template/edit/id/3 У меня есть вкладки пользовательского интерфейса jQuery. Они доступны непосредственно через анкеры. Например. www.example.com/template/edit/id/3#tabs-2
На # вкладках-2 У меня есть некоторые элементы, неважно, что это такое. Вы можете создавать или редактировать их. Эти элементы получили собственный контроллер, поэтому для их редактирования вы вызываете/elements/edit/id/44. В настоящее время я делаю это в слое с Fancybox. Для этого я использую функциональность iframe для Fancybox.
Итак, если вы находитесь в/template/edit и вы нажимаете кнопку редактирования элемента, открывается слой, включающий iframe, который загружает/элементы/редактирует.
Итак, если вы сейчас измените элемент и нажмите «Сохранить», я хочу, чтобы слой автоматически закрывался и перезагружался.
Fancybox предоставляет возможность указать, что он должен делать, когда он закрывается. На данный момент я получил его так:
'onClosed' : function() {window.location.reload();}
Это фактически перезагружает верхнее окно, а не фрейм. Кроме того, есть возможность закрыть Fancybox через JS. Я делаю, что, установив переменную View, который вызывает это, например:
<?php if($this->close): ?>
<script type="text/javascript">
parent.$.fancybox.close();
</script>
<?php endif ?>
Таким образом, если экономия была успешно я поставил $ this-> view-> близко = истина и слой получает clsoed который вызывает мой JS.
Это прекрасно работает. Моя проблема теперь заключается в том, чтобы перезагрузить с помощью # tabs-2 в моем URL-адресе.
Конечно, я мог бы получить URL-адреса, очистить их от других якорей, которые пользователь набрал и т. Д., И построить мой URL-адрес, который я установил в расположение окна, но как-то я думаю, должно быть более простое решение.
E.g. установив URL-адрес браузера на # tabs-2 без перезагрузки, но это также звучит не очень приятно. Перезагрузка проста, но наличие якоря довольно сложно.
ли вы попробовать 'window.location.href = window.location.href'? – Mottie
Это будет то же самое, что и reload(). Перезагрузка работает, но если вы находитесь на второй вкладке, отредактируйте что-нибудь, сохраните ее, вы хотите остаться на второй вкладке после перезагрузки и не вернуться к первому. По умолчанию первая привязка не привязана по умолчанию. – xotix