Experiment: Kohlkopf

+Übersicht
+Tools & Links
+HTML-Allgemein
+Tabellen & Layer
+JavaScript/DOM
+CSS
-Frames
Frameinhalt ändern
Frameset bookmarken
Seitentitel ändern
Frameset nachladen
Frameset definieren
Frames-PRO & KONTRA
Frameset verhindern
+Diverses


 
Valid CSS!
Valid HTML 4.01!
 
 
zum Provisorium

 > Übersicht der Fragen
   > Frames
     > Frameinhalt ändern
 
 
Wie ändere ich den Inhalt mehrerer Frames gleichzeitig?
 

Oftmals ist es notwendig, beim Aufruf einer neuen Seite innerhalb eines Framesets auch den Inhalt eines anderen Frames, bspw. der Navigation zu ändern.

Eine relativ umständliche Möglichkeit besteht darin, für jede mögliche Konstellation ein eigenes Frameset zu erstellen und dieses dann aufzurufen. Der Nachteil abgesehen vom damit verbundenen Arbeitsaufwand ist allerdings, daß in diesem Fall das komplette Frameset neu geladen werden muss, womit einer der Vorteile von Frames wirkungslos wird.

Die andere Möglichkeit besteht darin, per Javascript das location- Attribut der betreffenden Seite/n zu ändern.

Beispiel
Mit einem Klick Dateien in mehreren Frames austauschen

Quelltext der das Frameset definierenden Seite:


<html>
<head>
<title>Inhalt mehrerer Frames &auml;ndern</title>
</head>
<frameset rows="80,*,80">
  <frame src="kopf.html"name="kopf">
  <frameset cols="200,*">
    <frame src="navigation.html"name="navigation">
    <frame src="inhalt.html"name="inhalt">
  </frameset>
  <frame src="fuss.html"name="fuss">
</frameset>
</html>

Erläuterung:

Es wird ein Frameset mit 4 Frames definiert. In einem Frame befindet sich eine Seite "navigation.html", von welcher aus, wie oftmal üblich, per Link zu einer Seite in einem anderem Frame "gesprungen" werden soll. Den anderen 3 Frames wurden mit dem name-Attribut Namen vergeben, um sie als Ziel in einem Link oder einem Javascript ansprechen zu können.

Quelltext der navigation.html


<html>
<head>
<title>navigation.html</title>
<script type="text/javascript">
<!--
function changeFrame(url,z_frame)
{
  top.frames[z_frame].document.location=url;
}
//-->
</script>
<base target="inhalt">
</head>
<body>
  <h1>navigation</h1><hr>
  <a href="inhalt.html"
    onclick="changeFrame('kopf.html','kopf');
    changeFrame('fuss.html','fuss');">
  Inhalt
  </a><br>
  <a href="inhalt2.html"
    onclick="changeFrame('kopf2.html','kopf');
    changeFrame('fuss2.html','fuss');">
  Inhalt2
  </a><br>
  <a href="inhalt3.html"
    onclick="changeFrame('kopf3.html','kopf');
    changeFrame('fuss3.html','fuss');">
  Inhalt3
  </a>
</body>
</html>

Erläuterung:

Die Seite enthält 3 Links. Durch die Angabe...


<base target="inhalt">

im <head> der Seite wird erreicht, dass alle Linkziele dieser Seite in das Frame inhalt geladen werden.

Allerdings sollen durch einen Klick auf die Links auch die Seiten in den anderen Frames ausgetauscht werden.
Da dies mit HTML-Mitteln nicht möglich ist, wird hier ein Javascript zuhilfe genommen. Im Beispiel wird beim onclick- Event der Links die Javascript- Funktion changeFrame() aufgerufen. Beim Aufruf werden dieser Funktion als Parameter die URL der zu ladenden Seite und das Zielframe dieser Seite übergeben. Die im <head> der Seite notierte Funktion ändert bei einem Aufruf anhand dieser Parameter das location- Attribut des im entsprechenden Frame geladenen Dokuments, wodurch die neue Seite in diesem Frame erscheint.


tip   Wie immer sollte man beim Einsatz von Javascript davon ausgehen, daß ein Besucher im Browser Javascript deaktiviert haben könnte.
Insbesondere die Funktionalität der Navigation einer Webseite sollte auch ohne aktiviertes Javascript gewährleistet sein. Im angeführten Beispiel würde ein Besucher ohne aktiviertes Javascript lediglich in den Genuss der in den Links per href- Attribut definierten Linksziele kommen.

 
 
   
beantwortet von
doktormolle
 
 
zum proVisorium Impressum