2010-06-25 7 views
2

chargé dynamiquement trouvé une question similaire, mais la réponse acceptée est pas ce que je veux: Using an iframe in jquery.simplemodal, the iframe reload when the popup is closedaddon JQuery SimpleModal continue réouverture J'ai iframe

Je veux d'abord charger le contenu dans un iframe dynamiquement, puis quand il a terminé le chargement, utilisez SimpleModal pour l'afficher. Mon problème est qu'il semble continuer à remonter.

J'ai lié ce qui suit à un clic de bouton et il s'ouvre bien (même si je ne suis pas convaincu que le contenu iframe a réellement fini de charger quand il s'ouvre.) Mais après la jolie animation, je vois que La requête ajax est répétée et elle réapparaît ouverte.

$.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(); 
      }) 
      }) 
     }) 
     }, 
    }); 
    }); 
}); 

que vous pouvez voir la vie est assez compliquée;) la source iframe doit être généré sur le serveur, puis un iframe avec elle chargé et que lorsque le dialogue destructed perd le focus. PS: Ce serait bien si stackoverflow pouvait faire une auto-indentation pour du code copié-collé, cela a pris une éternité! ;)

J'ai essayé d'ajouter $('#zong').attr('src', ''); dans la fonction onClose, mais toujours pas de chance, le dialogue modal revient de morts-vivants. ;)

Merci pour l'aide!

Répondre

1
$.get('a/zong/299/' + number +"/", function(data) { 
    $('<iframe id="zong" src='+data+ 
    ' width="490" height="350" style="display:none;border:none;"></iframe>').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(); 
      }) 
      }) 
     }) 
     }, 
    }); 
}); 
+0

merci. Cela arrête probablement le dialogue réapparaissant, mais n'attend pas que l'animation démarre après le chargement de l'iframe. pouvez-vous créer une combinaison d'événement .load ou onload et un dialogue modal? – rdrey