Nach erneutem window.open() Layer-Probleme
Tom
- javascript
Tach zusammn'!
Ich habe ein heftiges Problem (Netscape 4):
Ich habe ein primäres Browserfenster, von dem aus ich ein zweites, meinen Bedürfnissen zugeschnittenes Fenster öffne. Das zweite Fenster beinhaltet u.a. ein zentrales Menü, von dem aus zu jedem Menüpunkt ein weiteres (drittes) Fenster geöffnet wird.
Im Hauptfenster (also im zweiten) steht nun also ein Link, der ein drittes Unterfenster öffnet (Fenster - nicht Frame).
In diesem dritten Fenster befinden sich nun diverse Layer, die dynamisch (de-)aktiviert werden. Das funktioniert auch alles. Dann habe ich einen Link ins dritte Fenster gesetzt, der dieses Fenster wieder schließt, damit man zurück ins Hauptfenster kommt, in dem sich ja auch das zentrale Auswahlmenü befindet. Funktioniert auch tadellos. Bis hierher.
Aber dann kommts...: wenn ich nun *ein weiteres mal* im Hauptmenü auf den Link klicke, der das dritte Fenster (das ja mittlerweile wieder "brav" geschlossen wurde) öffnet, passiert folgendes: das dritte Fenster *wird auch* geöffnet - nur hagelt es dann im dritten Fenster massivst Javascript-Fehler und jeder Layer hat damit seine "Dynamik verloren".
Fassen wir also nochmal zusammen... in bester "Telekolleg"-Manier... ;))
Primäres Browserfenster > Zweites Fenster mit Hauptmenü > verschiedene dritte Fenster
Vom zweiten Fenster funktioniert das Öffnen eines dritten Fensters immer, jedoch funktioniert schon ab dem zweiten Mal Öffnen/Schließen *kein* einziger Javascript mehr (in einem der dritten Fenster). Beim *ersten* Öffnen funktionieren noch alle Scripts im dritten Fenster.
Danach: tot bzw. folgende Fehlermeldung(en) aus der Javascript-Konsole:
"window.document.LAYERNAME has no properties"
Es kommen eine Reihe dieser Fehlermeldungen (im Prinzip mit allen Layern des dritten Fensters)
Meine Problembeschreibungen beziehen sich aktuell nicht auf verschiedene dritte Fenster,
sondern immer auf ein und dasselbe - denn wenn es bei einem nicht funktioniert, wie soll
es dann erst bei allen funktionieren?
einige Originalaufrufe von mir:
Hauptmenü öffnet ein weiteres (drittes) Fenster mit...
function port3d() {window.open("port3dd.htm","Portfolio3DD","width=750,height=550,screenX=0,screenY=0");}
mit obiger Funktion geöffnetes drittes Fenster soll wieder geschlossen werden mit...
<img ... onMouseDown="window.close();" ...>
Es könnte ja sein, daß ich irgendwas bei der Benennung der zu öffnenden Fenster falsch mache - aber was? Immerhin läuft alles EINMAL einwandfrei - bis zum Schließen. Beim neu-Öffnen geht dann nix mehr richtig.
Über eine hilfreiche Antwort würde ich mich wirklich sehr freuen!
Vielen Dank!!!
Thomas, der bei 32°C vorm Rechner sitzen muß anstatt irgendwo im Garten (oder sonstwo) zu sitzen... (wenigstens funktioniert der Kühlschrank - im Gegensatz zur Klimaanlage)
Hallo Tom!
Wie sind denn die Layer im 3 Fenster definiert? Deine Beschreibung klingt für mich fast so, als ob die JavaScripte aus dem dritten Fenster beim 2. mal Öffnen immer noch versuchen, auf diejenigen Layer zurückzugreifen, die beim 1. Schließen aus dem Speicher gelöscht wurden (und die neuen Layer befinden sich dann an einer anderen Speicheradresse...). Wenn das so wäre, dann hättest Du wohl einen Bug in Netscape gefunden. Würde mich sehr interessieren, ob das tatsächlich so passiert.
Als Workaround schlage ich vor, es mal mit
Konstrukten wie
var layerName = new Layer();
zu probieren, hab ich allerdings auch noch keine Erfahrung mit. Die Dokumente in den Layern müßtest Du dann dynamisch schreiben, wie z.B. in
<../../sfausles/tsfa_tdb.htm#a3>
nachzulesen ist. Viel Glück beim Ausprobieren!
Viele Grüße
Andreas Bierhals
Hallo! - sagt ein vollauf erzürnter Tom!!!
Erstmal Danke, für Deine Tips - sind leider vergebens, denn...
ich habe da etwas ziemlich hirnrissiges herausgefunden: der "Fehler" lag
in keiner Weise bei meinen Aufrufen, sondern vielmehr an einer Stelle, wo
ich ihn nicht erwartet hätte: in den CSS - genauer gesagt in einer <span>
Anweisung innherhalb eines mit CSS vorformatieren <P>aragraphen.
Alle Layerdefinitionen, die NACH dieser EINZIGEN Zeile auftauchten, die
mit einem <span></span> versehen war, wurden bei einem weiteren Aufruf
einfach "ignoriert". Warum weiß allerdings nur Netscape allein. Es gibt
keinen plausiblen Grund, warum die Layer einmal korrekt dargestellt
werden und einmal nicht.
Ich habe dann (notgedrungen) die <span>-Anweisung herausgenommen und
sicherheitsalber die Layer innerhalb der HTML-Reihenfolge umgruppiert
und wer sagts' denn... es funktioniert!!!
Also Netscape... ich weiß wirklich nicht wie Ihr jemals den IE wieder
einholen wollt... (obwohl ich ein Netscape-Veteran bin muß ich leider
eingestehen: im IE sind weniger "offensichtliche" Fehler als z.Zt.
in Netscape) :(( oder :)) (wie man's 'nimmt)
Nun ja, vielleicht hilfts' ja irgendjemandem (ich meine die Sache
mit der <span>-Anweisung)
Ich für meinen Teil mußte mal wieder lernen, daß man mit Logik schon
lange nicht mehr weiter kommt... (seufz)
So - ich geh' jetzt raus in die angenehmen 32°C (ein Witz Ende Mai!)
und setz' mich in den "Biergarten meines Vertrauens" (wie gestern)
Viele Grüße,
Tom