flashnfantasy: HOWTO - iframe schliesst sich selber ???

Wie schließt man einen iFrame von 'innen' ?

folgendes ist Fehlanzeige, zwar kein Fehler aber auch keine Wirkung:
document.close()
self.close()
document.parentWindow.close()

Soweit meine bisherigen Ermittlungen sind, ist jeder iFrame einer frame-Liste des übergeordneten Dokumentes.
Heißt das etwa, ich muß den Frame aus der Frame-Liste entfernen ?
Wie mache ich das am besten ?
Ist das überhaupt der richtige Ansatz ?

  1. Wie schließt man einen iFrame von 'innen' ?

    was sollte denn passieren, wenn Du einen Iframe schliesst? Soll sich der Inhalt vom Parentwindow über die freigwewordene Fläche giessen? Das kann einfach nicht funktionieren.

    1. Nein, er soll einfach weg, mit seinem ganzen Inhalt.

      Spurlos in den Orkus, in die ewigen Jagdgründe.

      1. hi,

        Nein, er soll einfach weg, mit seinem ganzen Inhalt.

        zumindest optisch wäre er ja schon "weg", wenn du über das style-objekt seine maße auf 0 setzt.

        Spurlos in den Orkus, in die ewigen Jagdgründe.

        wenn du ihn wirklich weg haben willst, dann nutze removeChild.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hi wahsaga,

          das mit den removeChild() hört sich gut an, momentan habe ich nur das Problem, daß ich nicht weiß, von wem ich das Child entfernen soll.

          Problemlos komme ich an das übergeordnete Fenster ran (mit folgender Routine unten).
          Aber ab da streikt der ganze Salat. Egal wo ich den iFrame removen will, es gibt einen Fehler.

          function getTopWindow()
          {
            var parentView = document.parentWindow?document.parentWindow:document.defaultView;
            return parentView.parent;
          }

          1. hi,

            das mit den removeChild() hört sich gut an, momentan habe ich nur das Problem, daß ich nicht weiß, von wem ich das Child entfernen soll.

            vom parentNode des iframes ...?

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. hi wahsage,

              es gibt innerhalb des iFrames keinen parentNode !!!
              ich kann anbieten:

              • parentWindow
              • documentElement
              • parentWindow.parent

              etc...
              wie du siehst, hangele ich mich durch die Objekte durch, bisher ohne Erfolg.

              Vom übergeordenten Fenster kann ich die Frames ansprechen mit:

              • document.getElementsByTagName("iframe")[0]

              wobei der index 0 nicht stimmen muß (ansonsten wäre es zu einfach).

              Nun suche ich das Gegenstück für das Fenster selber.
              Mir ist jetzt schon klar, daß das schliessen nur vom übergeordneten Fenster aus geht.

              Momentan bin ich am testen, wie ich vom übergeordneten Fenster den richtigen Frame anspreche.

              1. Hi,

                es gibt innerhalb des iFrames keinen parentNode !!!

                Das ist doch auch total irrelevant. Du willst ja auch nicht innerhalb des iframes was löschen.

                Vom übergeordenten Fenster kann ich die Frames ansprechen mit:

                • document.getElementsByTagName("iframe")[0]

                Jetzt hast Du das iframe-Element. Davon nimmst Du den parentNode.

                cu,
                Andreas

                --
                Warum nennt sich Andreas hier MudGuard?
                Schreinerei Waechter
                Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                1. Jetzt hast Du das iframe-Element. Davon nimmst Du den parentNode.

                  Leider ist das Problem etwas komplizierter:
                  ich weiß nicht, ob es der richtige Frame ist, den ich jetzt schliesse (ich nehme immer mal an, daß ich mehr als einen iFrame habe).

                  Also brauche ich etwas, womit ich den iFrame aus den übergeordneten Document abgleiche mit dem iFrame selbst.

                  Soweit meine Ermittlungen:

                  Im iframe selber kann ich folgenden Vergleich durchführen:

                  parentDocument.frame[i].contentWindow == document.parentWindow

                  wobei parentDocument das übergeordnete Document ist.
                  Damit wäre parentDocument.frame[i].parentNode das Element, was MudGuard meint.

                  Jetzt ist mir das jedoch etwas durchs Knie ins Auge...
                  würde das Parent-Element des iFrames gerne direkt ermitteln,
                  und dazu fehlt mir noch das nächste Attribut zu

                  • document.parentWindow
                    um direkt den HTML-Node des iFrame zu kriegen.
                    ---

                  Danke für eure Ideen.

                  1. Lösung ???

                    var a = document.parentWindow.frameElement;
                    a.parentNode.removeChild(a);

                    Wenn ich es auf allen Browsern getestet habe, habe ich die Lösung !