Frameset seiten über Link zuweisen
Florian
- javascript
Hi!
Kann man einem noch nicht geöffneten Frameset über einen Link schon von vorne herein die Seiten zuweisen, die er später anzeigen soll?
Gruß Flo
AFAIK-nicht mit HTML Mitteln.
MFG
bleicher
Aha! Geht also überhaupt nicht?
Auch nicht mit etwas anderem!?
Gruß Flo
PHP wäre das mir bekannte
MFG
bleicher
Hallo,
Kann man einem noch nicht geöffneten Frameset über einen Link schon von vorne herein die Seiten zuweisen, die er später anzeigen soll?
Jain. Nur auf nicht empfehlenswerte Weise.
Im Prinzip ist das ein Problem der Datenübergabe zwischen zwei Dokumenten, wenn ich Dein Problem richtig verstehe. Man klickt in Dokument A auf einen Link, der dann Frameset B aufruft – und Frameset B erfährt dann aus mit Javascript übergebenen Informationen, mit welchen Ressourcen es seine Frames bevölkern soll.
Die Problem damit liegen auf der Hand:
• Wer kein Javascript aktiviert hat, sieht nichts oder höchstens die im HTML des Framesets festgeschriebenen Voreinstellungen.
• Wenn es schlecht aufgeführt ist, ist die spezielle Frame-Konfiguration sogar noch nicht mal bookmarkbar.
Ich würde deswegen wirklich stark zu einer serverseitigen Variante raten, wie Bleicher es schon vorgeschlagen hat.
Ansonsten:
Hatto von Hatzfeld hat schon vor Jahren für SELFHTML einen Artikel geschrieben, der beschreibt, wie man das Attribut name des window-Objektes für die Wertübergabe zwischen zwei in einem Fenster aufeinander folgenden Dokumenten nutzt. Das wäre eine Möglichkeit. Ich würde aber davon abraten, heutzutage öffnet man Links gerne mal in neuen Tabs, das neue Tab hat demzufolge einen anderen Wert für window.name als das Ursprungstab. Zudem hat der Benutzer keine Chance des Bookmarkens, da die URI des Framesets gleich bleibt, der Benutzer beim nach Stunden, Tagen, Wochen wieder erfolgenden Besuch der Seite eben nicht die angepasste Frameset-Version, sondern die Default-HTML-Version bekommt, da die in window.name gespeicherten Daten natürlich beim erneuten Besuch nicht vorhanden sind.
Sinniger wäre eine andere Möglichkeit, nämlich die Parameter in die URI zu packen, am besten als Suchparameter, diese Dinge, die mit "?" angehängt werden. Dabei kann man die URI bookmarken und erhält – bei aktiviertem Javascript – immer dasselbe Ergebnis. Und auch dazu gibt es eine ausführlichere Beschreibung in einem Artikel unter SELFHTML Aktuell, Stefan Puff hat – ebenfalls vor längerer Zeit – einen Artikel zum Thema Wertübertragung mit Javascript geschrieben; der Abschnitt zu URIs ist der passende.
Die Logik des Javascripts sähe dann so aus:
1. Das Frameset wird geladen
2. Im Frameset wird Javascript aktiv (z.B. window.onload)
3. Javascript grapscht sich die Suchparameter aus der URI, location.search bietet sich an.
4. Man hat nun einen String. Da Du mehrere Frames hast, die Du befüllen musst, solltest Du diesen String parsen. Im Artikel ist schon eine Funktion decode() beschrieben, die das für URI-Suchparameter typische format variable1=wert&variable2=wert zerlegt. Dieses Format bietet sich für den Suchstring an wie Faust auf Auge, schliesslich weisst Du einzelnen Frames (Variablen) konkrete Werte (URI oder besser Teil-URIs) zu.
5. Jeder Frame wird anhand des Framenames identifiziert und ihm wird die passende URI zugewiesen.
6. Es gibt keinen Schritt Sechs.
Aber wie gesagt, beide Lösungen setzen wiederum auf das Vorhandensein von Javascript auf, manche – auch Admins von Firmen – sind da extrem picklig. Ich rate daher entweder zu serverseitigem Zusammenbasteln des Framesets oder der Überlegung, nicht doch mehrere unterschiedliche, statische Framesets aus reinem HTML zu basteln.
Tim