2012-03-02 13 views
8

Mam witrynę Wordpress, w której posty są ładowane do elementu iframe.Jak zamknąć iframe od wewnątrz iframe?

Jest to kod, który działa:

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

Teraz, jak zamknąć ten załadowany iframe od wewnątrz iframe?

Stroną główną jest index.php (główna pętla wordpress), zawartość iframe to single.php (pojedynczy wpis) bez nagłówka i stopki.

Dzięki.


To co mam w 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

Zamknięcie iframe? Co masz na myśli? Czy chcesz usunąć wewnętrzny element iframe? –

+0

Możliwy duplikat [Jak zamknąć element iframe w obrębie samej ramki iframe] (http://stackoverflow.com/questions/6754935/how-to-close-an-iframe-within-rself-self) –

Odpowiedz

17

wykonać poniższy kod z single.php który jest ładowany wewnątrz iframe. W ten sposób odnajdziemy iframe, używając kontekstu rodzica window i usuwamy lub ukrywamy.

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

Próbowałem tego, ale nie działa, możesz zobaczyć moją treść single.php edytowaną w moim pytaniu ... –

+0

Tylko upewniając się. Czy element iframe znajduje się w tej samej domenie? – ShankarSangoli

+0

Tak, jasne. Element iframe ładuje wpis w witrynie Wordpress. –

9

wiem faktycznie małą sztuczkę.

Zrób funkcję na swojej stronie nadrzędnej

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

Wewnątrz iframe chcesz zamknąć połączenie z dowolnego miejsca chcesz

parent.closeIFrame(); 

Tricky, prawda?

+1

Jeśli zadeklarujesz taką funkcję, nie zostanie ona dodana do obiektu 'window', wierzę, że musisz to zrobić:' var closeIFrame = function() {...} ' – Jasper

+1

@Jasper, dzięki człowieku. Powinienem teraz trochę przespać ...;) – Starx

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

Działa to, ale nie w domenie –

0

natknąłem tego problemu stworzenie bookmarklet tak jak Pin It Pinterest jest.

Powinien działać w wielu domenach.

Jedynym sposobem mogę pracować na to uwagę, był zamieszczając wydarzeń między strony wewnątrz iframe i strony nadrzędnej zgodnie z następującym przykładem na GitHub:

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

Mam wysłana odpowiedź na ten temat inny wątek: https://stackoverflow.com/a/43030280/3958617

Mam nadzieję, że pomoże!

Powiązane problemy