Homepagebau
Dateiversion:
diesen Beitrag diskutieren,
ergänzen, eine Frage stellen

Links und Frames

Schwierigkeitsgrad:

 

öffnen von mehreren Seiten mit einem Link:


Beschreibung:

In diesem Abschnitt wollen wir uns damit beschäftigen, wie man Frames korrekt adressiert - um zum Beispiel mit einem Link 2 oder mehr Frames zu aktualisieren.


Links - die Eigenschaft "Location":

Das Document-Objekt besitzt die les- und schreibbare Eigenschaft "Location", welche die URL der geladenen Seite angibt.
Es gibt eine Reihe verschiedener Möglichkeiten, diese Eigenschaft zu setzen: location = "..." (äquivalent zu self.location = "..." und document.location = "..."), location.url = "..", location.replace("..."). Wirklich sinnvoll ist vor allem letztere, da sie die Variante darstellt, die auch von älteren Browsern unterstützt wird.

Adressierung von Frames:

Im praktischen Einsatz genügt es allerdings häufig nicht, einfach nur eine neue Seite zu öffnen. Uns interessiert außerdem WO wir sie öffnen. Dafür gibt es vor allem 2 wichtige Möglichkeiten. Eine Framesseite besitzt die Eigenschaft "frames[]". Dabei handelt sich um ein nur lesbares Array, das Verweise auf alle Frames enthält. Die Reihenfolge stimmt dabei mit der Reihenfolge des Auftauchens der Frames im Quelltext überein.
Beispiel: frames[0] ist dabei der 1. Frame, frames[1] der 2. usw.
Außerdem können Frames auch über ihren Namen angesprochen werden.
Beispiel: oben ist der Frame mit dem Namen "oben".

Es gibt einige nur lesbare Schlüsselwörter ("top", "self" und "parent"), die ebenfalls Verweise darstellen:
self = Verweis auf den Frame selbst
parent = Verweis auf den übergeordneten Frame
top = Verweis auf den Basisframe

Äquivalent zu diesem Beispiel der Quellcode:

Basisframe ("frame1.htm")
...
<frameset
rows="150,*">
  <frame
name="oben" src="bannerleiste.htm">
  <frame
name="unten" src="frame2.htm" noresize
>
</frameset>

...

eingebetteter Frame ("frame2.htm")
...
<frameset
cols="135,*">
   <frame
name="links" src="nav.htm">
   <frame
name="rechts" src="start.htm" scrolling="auto" style="border: 8px double #FFFFFF" target="_self"
>
</frameset>

...

Beispiele:

von "nav.htm" ("links") aus den Inhalt des Frames "rechts" ändern:
rechts.location = "andereSeite.htm"

von "nav.htm" ("links") aus den Inhalt des Frames "oben" ändern:
("oben" ist ein übergeordneter Frame)
parent.oben.location = "andereSeite.htm"

von "nav.htm" ("links") aus eine komplett andere Seite öffnen:
top.location = "index2.htm"

Um mit einem einzigen Link mehrere Frames zu aktualisieren:
<a href="#" onClick="ZielFrame1.location = 'http://...'; ZielFrame2.location = 'http://...'; ... ZielFrameN.location = 'http://...';">...</a>

Alternative:
<a href="javascript:ZielFrame1.location = 'http://...'; ZielFrame2.location = 'http://...'; ... ZielFrameN.location = 'http://...';">...</a>