Wie schließe ich iframe innerhalb von iframe?

Lesezeit: 3 Minuten

Benutzeravatar von Luca Frank Guarini
Luca Frank Guarini

Ich habe eine WordPress-Site, auf der Beiträge in einen Iframe geladen werden.

Dies ist der Code, der funktioniert:

<a class="trick" rel="https://stackoverflow.com/questions/9538886/<?php the_permalink() ?>" href="https://stackoverflow.com/questions/9538886/<?php the_permalink() ?>"><?php the_title(); ?></a>

$(Dokument).ready(Funktion(){

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

Wie kann man nun diesen geladenen Iframe aus dem Iframe heraus schließen?

Die Hauptseite ist index.php (Haupt-Wordpress-Schleife), der Inhalt des Iframes ist single.php (einzelner Beitrag) ohne Kopf- und Fußzeile.

Vielen Dank.


Das habe ich 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>

  • Iframe schließen? Wie meinst du das? Möchten Sie den inneren Iframe entfernen oder was?

    – Reza Owliaei

    2. März 2012 um 19:06 Uhr

  • Mögliches Duplikat von So schließen Sie einen Iframe innerhalb des Iframes selbst

    – Oleg W. Wolkow

    13. Juli 2016 um 22:43 Uhr

Führen Sie den folgenden Code aus single.php die innerhalb der geladen wird iframe. Dies wird die finden iframe mit dem Elternteil window als Kontext und entfernen oder verbergen Sie es.

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

  • Ich habe das versucht, aber es funktioniert nicht, Sie können meinen single.php-Inhalt sehen, der in meiner Frage bearbeitet wurde …

    – Luca Frank Guarini

    2. März 2012 um 19:17 Uhr

  • Nur um sicher zu gehen. Befindet sich iframe in derselben Domäne?

    – ShankarSangoli

    2. März 2012 um 19:19 Uhr

  • Ja sicher. Der Iframe lädt einen WordPress-Beitrag.

    – Luca Frank Guarini

    2. März 2012 um 19:20 Uhr

  • Dann sollte es den Iframe finden und schließen. Kannst du die console.log und was sehen $('#iframe', window.parent.document) gibt?

    – ShankarSangoli

    2. März 2012 um 19:24 Uhr

  • Console.log gibt nichts aus. Ist es wahr, was habe ich in single.php hinzugefügt?

    – Luca Frank Guarini

    2. März 2012 um 19:29 Uhr

Ich kenne tatsächlich einen kleinen Trick.

Erstellen Sie eine Funktion auf Ihrer übergeordneten Seite

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

Innerhalb des Iframes möchten Sie den Anruf von überall aus schließen

parent.closeIFrame();

Heikel, nicht wahr?

  • Wenn Sie eine solche Funktion deklarieren, wird sie nicht hinzugefügt window Objekt, ich glaube, Sie müssen dies tun: var closeIFrame = function () { ... }

    – Jaspis

    2. März 2012 um 19:08 Uhr

  • Ich fand diese Antwort hilfreich. Das ist die Lösung, nach der ich stundenlang gesucht habe.

    – Sohel Pathan

    22. April 2020 um 6:03 Uhr

// Inside the iframe    
frameElement.remove();

Benutzeravatar von Rafael Araújo
Rafael Araújo

Ich bin auf dieses Problem gestoßen, als ich ein Bookmarklet erstellt habe, genau wie Pin It von Pinterest.

Es sollte domänenübergreifend funktionieren.

Die einzige Möglichkeit, dies herauszufinden, bestand darin, Ereignisse zwischen der Seite innerhalb des Iframes und der übergeordneten Seite nach diesem Beispiel auf GitHub zu posten:

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

Ich habe eine Antwort in diesem anderen Thread gepostet: https://stackoverflow.com/a/43030280/3958617

Ich hoffe es hilft!

1395220cookie-checkWie schließe ich iframe innerhalb von iframe?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy