2011-02-23 2 views
5

premier message - Bonjour! J'utilise fancybox (Fancybox homepage) pour afficher les fenêtres modales. J'essaie d'afficher un div caché avec un iFrame à l'intérieur de ce div. Fonctionne très bien. La deuxième fois que vous cliquez sur le lien, il ne charge pas l'iFrame (pas une erreur 404, il n'y a pas de contenu dans l'iFrame). Quelqu'un peut-il aider?Boîte fantaisie ne s'ouvrant pas deuxième fois iFrame

Les bits importants:

<script type="text/javascript"> 
function openIframeLink() { 
    $.fancybox({ 
     'type'   : 'inline', 
     'href'   : '#data' 
    }); 
}; 
</script> 

Et le code HTML:

<div id="hiddenElement"> 
    <iframe id="data" src="frames/frame4.php" width="100%" height="300"></iframe> 
</div> 
+0

la boîte de fantaisie travaille, son problème avec ur url :) quand est-u appeler le 'openIframeLink()' vous avez seulement besoin de fantaisie boîte une fois BTW (je pense) – Val

Répondre

3

Il ressemble à fancybox extrait l'élément iframe du DOM et il y met son propre conteneur. Ensuite, lorsque vous fermez le fancybox, il tente de l'insérer là où il était à l'origine, mais réussit à perdre la valeur de l'attribut src.

La méthode approuvée par le gars de fancybox pour ouvrir une iframe semble être la suivante.

<a id="mylink" class="iframe" href="frames/frame4.php">mylink</a> 
<script type="text/javascript"> 
    $("#mylink").fancybox(); 
</script> 

Une façon de contourner, est de cloner l'élément iframe, à savoir

function openIframeLink() { 
    $.fancybox({content: $('#data').clone()}); 
} 

De toute évidence pas l'idéal .. J'aimerais entendre quelqu'un carillon plus familier.

+0

Salut! Merci beaucoup. Il n'a pas tout à fait fait ce que je voulais (probablement de ma faute) mais vous m'avez montré exactement assez pour régler le problème. 'function openIframeLink() { \t/* Saisit le src avant que fancybox ne le perde */ \t theSrc = $ (" # data "). Attr ('src'); \t .fancybox $ ({ \t \t 'type' \t \t \t: 'inline', \t \t 'href': '#data', \t \t OnClosed \t \t: function() { \t \t \t $ ('#data') .atti ('src', theSrc); \t \t} \t}); }; '- merci beaucoup! – Djave

4

Si cela avait même problème. Sur la base de l'évaluation de Frode qu'il supprimait par l'attribut src, j'ai ajouté la fonction de rappel « OnClosed » sur mon appel fancybox et a pu ajouter le dans:

jQuery('#iframe_element').fancybox({ 
    'onClosed': reloadIframe 
}); 

function reloadIframe() { 
    jQuery('#iframe_element').attr('src','http://example.com'); 
} 
0

Fancybox perd l'attribut src. Voici une solution que j'utilise depuis

function openIframeLink() { 
    /* Grab the src before fancybox loses it */ 
    theSrc = $("#data").attr('src'); 
    $.fancybox({ 
     'type'  : 'inline', 
     'href'  : '#data', 
     onClosed  : function() 
     { 
      $('#data').attr('src', theSrc); 
     } 
    }); 
}; 
0

Ceci est ma façon de récupérer l'attribut src, sans savoir l'élément au préalable.

Peut aider quelqu'un ..

$(".fancybox.iframe").each(function(){ 
    var target = $($(this).attr("href")); 
    var src = target.attr("src"); 
    $(this).fancybox({ 
     'type': "inline", 
     'content': target, 
     'onClosed': function(){ 
      target.attr("src", src); 
     } 
    }); 
}); 
Questions connexes