[JavaScript] Einen frame schliessen

Peter

Lt. Commander
Registriert
Mai 2001
Beiträge
1.957
Einen frame schliessen

Wie kann man auf auf einer HTML-Seite, mit folgender frame-Struktur:
Code:
<frameset rows="100,*">
&nbsp;&nbsp;<frame name="f1">
&nbsp;&nbsp;<frameset cols="100,*">
&nbsp;&nbsp;&nbsp;&nbsp;<frame name="f2">
&nbsp;&nbsp;&nbsp;&nbsp;<frame name="f3">
&nbsp;&nbsp;</frameset>
</frameset>
frame f2 schliessen?
Das Ganze soll ähnlich wie im Explorer ablaufen: Ein Mausklick auf das "X" in der oberen Ecke schliesst den frame und verbreitert f3 auf 100%. Weiterhin sollte die Sache Client-seitig ablaufen, damit f3 nicht neu übertragen werden muss. Wär natürlich super wenn das Skript auch auf anderern Browsern als dem IE laufen würde ;)
 
Zuletzt bearbeitet:
moin peter,

eventuell kann man über das all-objekt (ie)/dom die frame-definitionen dynamisch verändern, allerdings wäre das halt schon wieder browserabhängig :(

da frames ja auch nur ne art window-objekt in javascript sind, vielleicht funzt ja die .close()-methode?!
wer weiß...(bin jetzt zu faul ums zu probieren)

anderer vorschlag: du änderst die frame-struktur:
-oberster container: frameset 1 (die beiden rows, datei f1 und fx)
-untergeordneter container (datei fx): frameset 2 (die beiden spalten, datei f2 und f3)

diese verschaltelung gibt dir dann die möglichkeit, als url für die untere reihe aus dem ersten frameset (datei fx) den pfad direkt zur datei f3 anzugeben. datei f2 ist dann weg und man sieht nur noch f1 (erste reihe) und f3 (zweite reihe, die jetzt ganz durch diese datei ausgefüllt wird)
rein theoretisch müsste datei f3 ja noch im cache sein, sodass nix neues geladen werden sollte...;)

geht das alles nicht, bleibt wahrscheinlich nichts anderes, als das komplette designkonzept zu ändern und sowas irgendwie über tabellen zu realisieren. vielleicht hat ja jemand anderes noch ne idee...

greets, weird
 
Ich denke auch, dass es mit JavaScript gehen müsste, schlimmstenfalls müsste noch eine Browser-Erkennung davor eingebaut werden. Allerdings habe ich es mit den Standard-Methoden wie close() bisher nicht hin bekommen. Auch von Steffen vorgeschlagene Notlösung B/H zu verkleinern funktioniert (bei mir) nicht.

Das mit dem "Unterframe" lässt sich so leider nicht realiesieren, da es sich um eine dynamisch generierte Seite handelt, die nicht im Cache landet
 
zu javascript:
<frame name="f2"> mit id/name versehen (evtl über span) und dann übers all-objekt einfach löschen. müsste dann ab ie4 funzen. da der zugriff auf höhe und breite nicht klappt, siehts aber auch damit schlecht aus. was bekommst du denn für eine fehlermeldung?

was nc6x und opera angeht hab ich keine ahnung...

das mit der dynamischen seite hab ich nicht gewusst :(
vielleicht lässt sich dafür aber irgendein umweg finden. evtl kannst du den quelltext der seite in einer variable speichern und dann über document.write() in den veränderten unterframe schreiben. dann müsste man aber anführungszeichen usw formatieren...alles nicht so ganz ideal :(

greets, weird
 
Nope

Trotz deinen Tipps, weird, habe ich es bisher nicht hin bekommen :(
Ich hab mal ein kleines html-Bespiel geschrieben - und vielleicht findet sich jemand, der weiss was in dem Script stehen müsste, damit es funktioniert ;)
 

Anhänge

soweit so gut...die dhtml/dom sache hat bei mir auch noch nicht recht funktionieren wollen, da hatte mein ie5.01 irgendwie noch aktualisierungsprobleme...
 

Anhänge

Super

Einen herzlichen nach "192.168.0.1:21", wo auch immer das ist :)
Manchmal hat man einfach nen zu grossen Brett vor dem Kopf um überhaupt noch was sehen zu könen ;)
 
danke für die blumen

192.168.0.1 liegt praktisch gleich hier bei mir, is meine lan ip ;)
nur nen ftp-server hatte ich schon länger nicht auf...

wohl betriebsblind gewesen, was? :D
mich würde noch interessieren, welche lösung du genommen hast...

greets, weird
 
Die Antwort

Die elegantere Lösung, mit der Zuweisung der Frame-URL an den übergeordneten Frame funktioniert leider nur mit statischem HTML, ansonsten muss die komplette Seite wieder neu übertragen werden. Daher habe ich mich erstmal für die Variante mit der Spaltengrössen-Änderung entschieden - jedenfalls solange, bis mir mal was besseres einfällt ;)
 
ich hab mich noch mal ein bisschen durch selfhtml geklickt, vielleicht ist es ja tatsächlich möglich, selbst eine art cache zu programmieren...

evtl kannst du ja ganz auf die frames verzichten und ähnliches über tabellen realisieren...ich weiß ja nicht, um welche konkreten seiten es sich handelt...
 
Zurück
Oben