2012-03-02 18 views
8

Ho un sito Wordpress in cui i post vengono caricati in un iframe.Come chiudere iframe dall'interno di iframe?

Questo è il codice che funziona:

<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> 

Ora, come chiudere questo caricata iframe dall'interno dell'iframe?

La pagina principale è index.php (ciclo wordpress principale), il contenuto dell'iframe è single.php (post singolo) senza intestazione e piè di pagina.

Grazie.


Questo è quello che ho in 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

Chiusura di Iframe? Cosa intendi? Vuoi rimuovere iframe interno o cosa? –

+0

Possibile duplicato di [Come chiudere un iframe all'interno di iframe stesso] (http://stackoverflow.com/questions/6754935/how-to-close-an-iframe-within-iframe-itself) –

risposta

17

eseguire il codice qui sotto da single.php che viene caricato all'interno del iframe. Questo troverà il iframe utilizzando il genitore window come contesto e rimuoverlo o nasconderlo.

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

Ho provato questo ma non funziona, puoi vedere il mio contenuto in single.php modificato nella mia domanda ... –

+0

Basta esserne sicuro. Iframe è nello stesso dominio? – ShankarSangoli

+0

Sì, certo. L'iframe carica un post di wordpress. –

9

In realtà conosco un piccolo trucco.

Fai una funzione sulla tua pagina genitore

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

All'interno l'iframe che si desidera chiudere chiamata da ovunque tu voglia

parent.closeIFrame(); 

Tricky, non è vero?

+1

Se dichiari una funzione come questa non viene aggiunta all'oggetto 'window', credo che tu debba fare questo:' var closeIFrame = function() {...} ' – Jasper

+1

@Jasper, grazie man. Dovrei dormire un po 'adesso ...;) – Starx

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

Funziona, ma non il dominio incrociato –

0

mi sono imbattuto in questo problema creando un bookmarklet proprio come Pin It di Pinterest.

Dovrebbe funzionare in più domini.

L'unico modo ho potuto lavorare su questo, è stato con la pubblicazione di eventi tra pagina all'interno del iframe sia la pagina principale seguendo questo esempio, su GitHub:

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

ho postato una risposta su questo altri thread: https://stackoverflow.com/a/43030280/3958617

Spero che aiuti!