2012-03-02 3 views
8

J'ai un site Wordpress où les messages sont chargés dans un iframe.Comment fermer iframe depuis l'intérieur de iframe?

C'est le code qui fonctionne:

<a class="trick" rel="<?php the_permalink() ?>" href="<?php the_permalink() ?>"><?php the_title(); ?></a> 

$ (document) .ready (function() {

$.ajaxSetup({cache:false}); 
    $(".trick").click(function(){ 
     var post_link = $(this).attr("rel"); 
     $("#frame").css("display","block"); 
     $("#frame").attr("url", post_link); 
     $("body").css("overflow","hidden"); 
    }); 

    });   </script> 
<iframe id="frame" frameborder="no" allowtransparency="true" width="100%" height="100%" scrolling="no" src=""></iframe> 

Maintenant, comment fermer cette charge iframe depuis l'intérieur de l'iframe?

La page principale est index.php (boucle wordpress principale), le contenu de l'iframe est single.php (single post) sans en-tête et pied de page.

Merci.


C'est ce que j'ai dans single.php

<head> 

<script src="http://code.jquery.com/jquery-latest.js"></script> 
    <script> 
    $(document).ready(function(){ 
     $("#close").click(function(){ 
      $('#frame', window.parent.document).remove(); 

      }); 

     }); 

    </script> 


</head> 

<body> 
<div id="container-single"> 
    <button id="close" >Close</button> 



    <?php if (have_posts()) : while (have_posts()) : the_post(); ?> 

     <article <?php post_class('single') ?> id="post-<?php the_ID(); ?>"> 

      <h1 class="entry-title"><?php the_title(); ?></h1> 

      <div class="entry-content"> 

       <?php the_content(); ?> 

       <?php wp_link_pages(array('before' => 'Pages: ', 'next_or_number' => 'number')); ?> 

       <?php the_tags('Tags: ', ', ', ''); ?> 

       <?php include (TEMPLATEPATH . '/_/inc/meta.php'); ?> 

      </div> 


     </article> 



    <?php endwhile; endif; ?> 

    </div> 

</body> 
+1

Fermeture de l'Iframe? Que voulez-vous dire? Voulez-vous supprimer iframe interne ou quoi? –

+0

Possible dupliquer de [Comment fermer un iframe dans l'iframe lui-même] (http://stackoverflow.com/questions/6754935/how-to-close-an-iframe-within-iframe-itself) –

Répondre

17

le code ci-dessous Execute de single.php qui est chargé à l'intérieur du iframe. Celle-ci trouvera le iframe en utilisant le parent window en tant que contexte et efface-les.

//You can call hide() if you want to just hide it 
$('#iframe', window.parent.document).remove(); 
+0

J'ai essayé cela mais ne fonctionne pas, vous pouvez voir mon contenu single.php édité dans ma question ... –

+0

Juste s'assurer. Est-ce que iframe est dans le même domaine? – ShankarSangoli

+0

Oui, bien sûr. L'iframe charge un message wordpress. –

9

Je connais un petit truc en fait.

Faire une fonction sur votre page parent

var closeIFrame = function() { 
    $('#iframeid').remove(); 
} 

A l'intérieur du iFrame que vous voulez fermer appel de partout où vous voulez

parent.closeIFrame(); 

Tricky, est-ce pas?

+1

Si vous déclarez une fonction comme ça, elle n'est pas ajoutée à l'objet 'window', je crois que vous devez faire ceci:' var closeIFrame = function() {...} ' – Jasper

+1

@Jasper, merci man. Je devrais dormir maintenant ...;) – Starx

1
// Inside the iframe  
frameElement.remove(); 
+0

Cela fonctionne, mais pas inter-domaine –

0

Je suis tombé sur ce problème en créant un bookmarklet comme Pinterest Pin It.

Il devrait fonctionner en mode inter-domaine.

La seule façon que je pouvais travailler ceci, était en affichant des événements entre la page dans la iframe et la page parent suivant cet exemple sur GitHub:

https://gist.github.com/kn0ll/1020251

J'ai posté une réponse sur cette autre fil: https://stackoverflow.com/a/43030280/3958617

Espérons que ça aide!