Zustand der Layer im Frameset speichern
Thomas
- javascript
Hi,
hatte gestern ein Problem, bei dem LenaLuna mir zum Teil geholfen hat.
MEINE FRAGE VON GESTERN
bin gerade am basteln mit einigen Layern. Dabei habe ich folgendes Problem.
Per Knopfdruck lassen sich die Layer ein- und ausblenden. Auf jedem Layer liegen verschiedene Links. Wird ein Link aktiviert - öffnet sich eine neue Site im gleichen Frame (so weit ja auch gewollt). Über die "Zurück-Taste" komme ich natürlich wieder auf die Seite mit den Layern, wo sich aber bedauerlicherweise der "Standard"->Layer aktiviert hat. Ich hätte natürlich gerne, dass der von mir >zuletzt eingeblendete Layer wieder erscheint.
Geht das? - oder muss ich mir etwas anderes ausdenken?
DIE ANTWORT:
du könntest den letzten zustand der layer (welcher sichtbar welcher nicht) in einem globalen array (das heisst auf der framesetebene speichern)
var zustand = new Array();
zustand["layer_1"] = true;
zustand["layer_2"] = false;
zustand["layer_3"] = false;
usw...
mit jeden click wird der zustand aktualisiert.
das eine funktion setzt zuerst alle auf false und anschliessend den der sichbar sein soll auf true.
beim zurückkommen auf die layerseite wird dieser zustand aus dem array ausgelesen...
du kannst natürlich auch die anfangssituation im array schon festlegen.
MEINE ERNEUTE FRAGE:
Muß ich das Script im Frameset einfügen? Und welches Script muß ich auf der Layerseite verwenden, damit der Zustand aktualisiert. Und wie bekomme ich das Frameset dazu, die Daten beim zurückkommen neu auszulesen und die eigenschaften einzustellen.
Vielen Dank im voraus an Euch
Gruß
Thomas
Hallo Thomas,
MEINE ERNEUTE FRAGE:
Muß ich das Script im Frameset einfügen? Und welches Script muß ich auf der Layerseite verwenden, damit der Zustand aktualisiert. Und wie bekomme ich das Frameset dazu, die Daten beim zurückkommen neu auszulesen und die eigenschaften einzustellen.
Ja, das Script mit dem Array muß in dem Dokument mit der Framesetdefinition eingefügt werden. Aus den Dokumenten, die in die Frames geladen werden kann man dann hoffentlich (!) mit
parent.zustand["layer_2"]=true usw. zugreifen. Am sinnvollsten wäre es, eine geeignete Funktion zustandsetzen() im Framesetdokument zu schreiben, auf die man dann mit parent.zustandsetzen(i) zugreifen kann. Das könnte man dann einfach mit onmouseover auf den Links machen, die die Layer ein- und ausblenden.
Ich bin mir aber gar nicht so richtig sicher, ob das wirklich in allen Browsern funktioniert, über parent.f() bzw. parent.x auf Funktionen und Variablen anderer Frames bzw. des Framesets zuzugreifen. Das mußt Du mal ausprobieren, wenn es hier keiner weiß.
Was aber ganz bestimmt geht. Du könntest die benötigten Informationen auch einfach in einem Cookie ablegen und von dort auslesen.
Gruß,
asptrakt
Hi Thomas!
Du musst drei Funktionen erstellen bzw. verändern:
In deine Funktion auf der Layerseite kommt folgende Zeile rein:
parent.setZustand("layer_1", true); // Bei true entweder true oder false einsetzen, je nachdem ob der Layer sichtbar sein soll (true) oder nicht (false)
In dein frameset kommt dann diese Zeile (siehe deinem Beitrag):
var zustand = new Array();
...und folgende Funktionen:
function setZustand(layername, isVisible)
{
zustand[layername] = isVisible;
}
function getZustand(layername)
{
return zustand[layername];
}
Auf deinen Layerseiten kannst du jetzt mit
parent.getZustand("layer_1")
die Sichtbarkeit abrufen!
Ach noch etwas: Hier ist (leider) viel an der Ausnahmenkontrolle zu programmieren.
Viel Spaß!
Marc Reichelt || http://www.marcreichelt.de/