私はFancyboxとZendを使用しています。次のことが明らかであることを願っています。リロードページからiframeを
www.example.com/template/edit/id/3 jQuery UIタブがあります。彼らはアンカーを介して直接到達することができます。例えば。 www.example.com/template/edit/id/3#tabs-2
On#tabs-2私はいくつかの要素を持っていますが、正確には関係ありません。それらを作成または編集することができます。この要素は独自のコントローラを持っているので、それらを編集するには/ elements/edit/id/44を呼び出します。現在、私はファンシーボックス付きレイヤーでそれをやっています。私はFancyboxのIframe機能を使っています。
したがって、/ template/editで要素の編集ボタンをクリックすると、/ elements/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->表示 - >近い=真とトリガーclsoedます層の私JS。
これは問題なく動作します。私の問題は今、私のURLに#tabs-2を持つことでリロードを行うことです。
もちろん、私はURLを得ることができ、他のアンカーからそれを掃除して、ユーザーが私のタイプなどに入れて、ウィンドウの場所に設定した私のURLを構築しますが、どういうわけか、簡単な解決策が必要です。
など。ブラウザのURLをリロードすることなく#tabs-2に設定しますが、これはあまりうまくありません。再読み込みは簡単ですが、アンカーは非常に難しいです。
あなたは 'window.location.href = window.location.href'を試してみましたか? – Mottie
これはreload()と同じです。リロードは実際には機能しますが、2番目のタブにある場合は、何かを編集して保存し、リロード後に2番目のタブに残り、最初に戻ってはなりません。デフォルトでは最初のタブはアンカーではありません。 – xotix