カラーボックスは、コンテンツとして iframe をロードするための特定のメソッドを提供します。そのようなカラーボックス ポップアップが閉じられると、親ページはまったくリロードまたは更新されません。
ただし、私のユースケースでは、カラーボックスの内容を交換せずに、開いているカラーボックス内にカスタム iframe 要素を追加/追加する必要があります。すでに開いているカラーボックスのコンテンツは純粋にインライン HTML であり、iframe はまったく存在しません。この新しいカスタム iframe のコンテンツは ajax 化されたコメント フォームであり、独自のページとして読み込まれた場合、または完全に修飾された iframe 要素でのみ機能します。
iframe
カラーボックスのコンテンツ内のリンクがクリックされたときに以下を追加する私の関数:
$('#cboxLoadedContent').append('<IFRAME frameborder="0" src="'+url+'" id="loadednode">');
これで問題なく動作するようになりました -IFRAME
が挿入され、コンテンツの通常の読み込みプロセスが実行され、すべてが完全に表示されます。
唯一の問題は、カラーボックス ネイティブの iframe コンテンツを終了するのとは異なり、閉じるボタンを使用するかオーバーレイをクリックして、このロードされたカラーボックスの「アウト」をクリックするとすぐに、親/トップ ページが突然リロードされることです。
これを防ぐにはどうすればよいですか?カラーボックス ネイティブの iframe を削除するとページの更新が回避されるのに、カラーボックス コンテンツに追加した iframe を削除すると親ページがリロードされるのはなぜですか?
参考までに、iframe のコンテンツであるページをカラーボックス ネイティブの iframe として読み込むことができます。終了してもページのリロードは発生しないため、どちらの場合も iframe のコンテンツに問題はありません。カラーボックスがカラーボックス処理された iframe とカラーボックス処理されていない iframe を削除する方法に注意してください。
いくつかの推測:
- 「name」属性がない、または固定の「id」属性があると問題が発生しますか?
- iframe が "src" 属性なしで最初のインライン HTML に含まれていたが、クリックするとその "src" パスを取得した場合、これらの問題は回避されますか?
- 「既に存在する HTML コンテンツを削除せずに、見ているカラーボックスにこの iframe をロードする」という別の方法はありますか?
私が使用しています(Drupal 6は新しいバージョンと互換性がないため、古いバージョンです):
- jQuery1.3.2
- カラーボックス v1.3.18.1 ( http://www.jacklmoore.com/colorbox/ )