同様の質問を見つけましたが、受け入れられた答えは私が望むものではありません: Using an iframe in jquery.simplemodal, the iframe reload when the popup is closed
最初にコンテンツを iframe に動的にロードし、ロードが完了したら、SimpleModal を使用して表示したいと考えています。私の問題は、それが再びポップアップし続けるように見えることです。
以下をボタンクリックにリンクし、正常に開きます (iframe コンテンツが開いているときに実際にロードが完了したとは確信していませんが)。そして、それは再び開きます。
$.get('a/zong/299/' + number +"/", function(data) {
$(document.body).append('<iframe id="zong" src='+data+
' width="490" height="350" style="display:none;border:none;"></iframe>');
$('iframe#zong').load(function()
{
$('#zong').modal({
overlayCss: {backgroundColor:"#C4EFFF"},
containerCss:{
...
},
overlayClose:true,
onOpen: function(dialog){
dialog.overlay.fadeIn('slow', function(){
dialog.data.hide();
dialog.container.fadeIn('slow', function(){
dialog.data.slideDown('slow');
});
})
},
onClose: function(dialog){
dialog.data.fadeOut('slow', function(){
dialog.container.hide('slow', function(){
dialog.overlay.slideUp('slow', function(){
$.modal.close();
})
})
})
},
});
});
});
お分かりのように、人生はかなり複雑です ;) サーバー上で iframe ソースを生成し、それをロードした iframe を作成し、ダイアログがフォーカスを失ったときに破棄する必要があります。
PS: スタックオーバーフローが、コピーして貼り付けたコードの自動インデントを行うことができればいいのですが、それには永遠にかかりました! ;)
$('#zong').attr('src', '');
onClose 関数内に追加しようとしましたが、まだうまくいきません。モーダル ダイアログがアンデッドから戻ってきます。;)
助けてくれてありがとう!