Как закрыть iframe изнутри iframe?

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

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

$(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");
 });
 });

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

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

Спасибо.

Это то, что у меня есть в single.php

<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(); ?-->">
 
 <div>
 <!--?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>
4 ответа

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

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


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

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

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

Внутри iframe вы хотите закрыть вызов из любой точки, где хотите

parent.closeIFrame();

Трудно, не так ли?


// Inside the iframe 
frameElement.remove();


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

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

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

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

Я отправил ответ на этот другой поток: qaru.site/questions/158954/...

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

licensed under cc by-sa 3.0 with attribution.