Как закрыть iframe изнутри iframe? - PullRequest
8 голосов
/ 02 марта 2012

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

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

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

$ (документ) .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>

Теперь, как закрыть этот загруженный 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>

Ответы [ 4 ]

17 голосов
/ 02 марта 2012

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

//You can call hide() if you want to just hide it
$('#iframe', window.parent.document).remove();
8 голосов
/ 02 марта 2012

Я знаю маленький трюк на самом деле.

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

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

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

parent.closeIFrame();

Хитрый, не правда ли?

1 голос
/ 30 июня 2015
// Inside the iframe    
frameElement.remove();
0 голосов
/ 26 марта 2017

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...