2012-03-02 5 views
8

У меня есть сайт Wordpress, где сообщения загружаются в iframe.Как закрыть iframe изнутри iframe?

Это код, который работает:

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

$ (документ) .ready (функция() {

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

Теперь, как закрыть этот нагруженный iframe изнутри iframe?

Главная страница - index.php (основной цикл wordpress), содержимое iframe - single.php (одно сообщение) без заголовка и нижнего колонтитула.

Спасибо.


Это то, что я получил в 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

Закрытие iframe? Что вы имеете в виду? Вы хотите удалить внутренний iframe или что? –

+0

Возможный дубликат [Как закрыть iframe внутри самого iframe] (http://stackoverflow.com/questions/6754935/how-to-close-an-iframe-within-iframe-itself) –

ответ

17

Execute ниже кода из single.php, который загружается внутри iframe. Это найдет iframe, используя родительский window в качестве контекста и удалите или скройте его.

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

Я пробовал это, но не работает, вы можете увидеть, что мое содержание single.php отредактировано в моем вопросе ... –

+0

Просто убедитесь. Является ли iframe в том же домене? – ShankarSangoli

+0

Да, конечно. Iframe загружает сообщение Wordpress. –

9

Я знаю немного трюк на самом деле.

сделать функцию на вашей родительской странице

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

Внутри фрейма вы хотите закрыть вызов из любой точки мира вы хотите

parent.closeIFrame(); 

Tricky, не так ли?

+1

Если вы объявляете такую ​​функцию, она не добавляется в объект 'window', я считаю, что вам нужно сделать это:' var closeIFrame = function() {...} ' – Jasper

+1

@Jasper, спасибо человеку. Мне нужно немного поспать ...;) – Starx

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

Это работает, но не междоменное –

0

Я столкнулся с этой проблемой, создав букмарклет, точно так же, как Pinterest's Pin It.

Он должен работать в кросс-домене.

Единственный способ, которым я мог бы решить эту проблему, был размещая события между страницы внутри фрейма и родительской страницы следуя этому примеру на GitHub:

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

Я разместил ответ на это другая резьба: https://stackoverflow.com/a/43030280/3958617

Надеюсь, это поможет!

Смежные вопросы