HOWTO - iframe schliesst sich selber ???
flashnfantasy
- javascript
0 Klawischnigg0 flashnfantasy0 wahsaga0 flashnfantasy0 wahsaga
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 ?
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.
Nein, er soll einfach weg, mit seinem ganzen Inhalt.
Spurlos in den Orkus, in die ewigen Jagdgründe.
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
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;
}
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
hi wahsage,
es gibt innerhalb des iFrames keinen parentNode !!!
ich kann anbieten:
etc...
wie du siehst, hangele ich mich durch die Objekte durch, bisher ohne Erfolg.
Vom übergeordenten Fenster kann ich die Frames ansprechen mit:
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.
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
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
Danke für eure Ideen.
Lösung ???
var a = document.parentWindow.frameElement;
a.parentNode.removeChild(a);
Wenn ich es auf allen Browsern getestet habe, habe ich die Lösung !