Von einer NoFrames-Seite per Links auf versch. Seiten in Frame-Seite
Flo
- html
Hallo!
Ich habe in meinem Projekt eine Startseite ohne Frames. Darauf möchte ich jetzt Links zu den wichtigsten Seiten meines Projekts anbieten.
Wenn der Nutzer darauf klickt, soll das Frameset geladen werden und gleich auch die Seite zu dem gewünschten Thema - also nicht einfach Link auf das Frameset, was dann mit einer Standardseite angezeigt wird, sondern Link auf das Frameset mit spezifischem Inhalt, je nach gewähltem Link.
Danke für eure Hilfe!
Flo
Hallo Flo,
Ich habe in meinem Projekt eine Startseite ohne Frames.
Darauf möchte ich jetzt Links zu den wichtigsten Seiten meines Projekts anbieten.
da gibt es eine ganze Reihe von Ansätzen.
Ein recht uneleganter wäre es, soviel Framesets wie Links einzurichten.
Der Frameset lädt ja seinen Inhalt.
Für eine einfache Parameterübergabe fehlt Dir etwas was stehenbleibt.
Eine Erweiterung dieses Gedankens findest Du in:
Hatto von Hatzfeld Javascript-Wertübergabe zwischen verschiedenen HTML-Dokumentenhttp://www.teamone.de/selfaktuell/wertueb.htm
Da kannst Du sowas wie eine Parameter-Bereitstellung über den
'Fensterrrahmen' realisieren.
Klaus
Mit JavaScript geht das, indem man die Frameset-Datei mit dem Namen der Seite als Parameter aufruft (z.B. index.htm?seite.htm). Dieser Name muß dann in der Frameset-Datei in das dynamisch generierte Frameset eingefügt werden, woraufhin diese Seite dann im richtigen Frame geladen wird. Hier (m)ein Lösungsvorschlag, der eigentlich dazu gedacht war, ein fehlendes Frameset "nachzuladen":
Voraussetzung: JavaScript muß aktiviert sein (wenn nicht, dann wird
die Seite einfach ohne Frameset geladen).
Wichtig: Unbedingt eigene, eindeutige Frame-Namen verwenden, da sonst
die Identifizierung des eigenen Framesets durch das Script nicht mehr
eindeutig wäre!
1.) Frameset (z.B. index.htm):
<head>
...
<script language="JavaScript">
<!--
// Aus fremden Frames befreien!
if(top.frames.length>0) top.location.href=location.href;
// -->
</script>
</head>
<script language="JavaScript">
<!--
var seite=location.search.substring(1,location.search.length);
if(seite.length==0) seite="start.htm";
document.write('<frameset cols="*,150" border=0 frameborder=0
framespacing=0>');
document.write(' <frame src="' + seite + '" name="HauptFenster">');
document.write(' <frame src="menu.htm" name="MenueFenster">');
document.write('</frameset>');
// -->
</script>
<noscript>
<frameset cols="*,150" border=0 frameborder=0 framespacing=0>
<frame src="start.htm" name="HauptFenster">
<frame src="menu.htm" name="MenueFenster">
</frameset>
</noscript>
2.) Einzelne Seiten, die im Frame "HauptFenster" geladen werden:
<head>
...
<script language="JavaScript">
<!--
function checkFrames()
{
if(top.frames.length==0 top.frames[0].name!="HauptFenster")
top.location.href="index.htm?"+location.href.substring(location.href.lastIndexOf("/")+1,location.href.length);
}
// -->
</script>
</head>
<body onLoad="checkFrames()" ...>
...
Der Index top.frames[x] muß entsprechend dem Aufbau des Framesets
angepaßt werden. Der Wert 0 bezieht sich auf den ersten definierten
Frame.
Es ist wichtig, die Funktion checkFrames() mittels onLoad aufzurufen,
damit das Laden der Seite nicht vorzeitig abgebrochen wird, da es sonst
passieren kann, daß die Seite nur unvollständig im Frameset nachgeladen
wird (Browser-Cache).
Bei Seiten, die standardmäßig im Hauptframe geladen werden (hier:
start.htm) braucht hinter "index.htm" kein weiterer Parameter angegeben
zu werden. Hier genügt also: top.location.href="index.htm";
Gruß,
Stefan