Frameset dynamisch erzeugen
David Loos
- javascript
0 Ronny0 Rico0 David Loos0 Ronny
Guten morgen zusammen!
Ich möchte eine Site mit einem Frameset zusammenschrauben.
Klickt man in die Navigation, müssen die Inhalte von drei Frames ausgetauscht werden. Damit bei einem "history back" nicht immer nur im zuletzt aktualisierten Frame eine Seite zurückgegangen wird, möchte ich jedesmal das komlette Frameset dynamisch neu aufbauen.
Das klappt soweit auch ganz gut. Leider aber nur im Internet Explorer :-( Netscape (4.x und 6.x) will das neue Frameset aber partout nicht neu rendern. Kann mir hierzu evtl. jemand einen Tipp geben?
Hier der Quellcode zum erzeugen des Framesets:
Habs zum anschaun mal auf ´nen Webserver gespielt:http://www.galileos.de/test/
<script language="Javascript">
navigation = new Array(
"navi1.htm", //Rubrik1
"navi2.htm", //Rubrik2
"navi3.htm" //Rubrik3
);
bild = new Array(
"left/bild1.htm", //Rubrik1
"left/bild2.htm", //Rubrik2
"left/bild3.htm" //Rubrik3
);
inhalt = new Array(
"content/rubrik1.htm", //Rubrik1
"content/rubrik2.htm", //Rubrik2
"content/rubrik3.htm" //Rubrik3
);
position = parent.window.location.href;
quelle = position.split("#");
rubrik = quelle[1];
navi = navigation[rubrik];
left= bild[rubrik];
content = inhalt[rubrik];
document.write('<html>');
document.write('<head>');
document.write('<title>Zeitvertreib oder Zeitverschwendung?</title>');
document.write('</head>');
document.write('<frameset rows="58,561" cols="*">');
document.write('<frame src=top/'+navi+' name="top">');
document.write('<frameset cols="114,875" rows="*">');
document.write('<frame src='+left+' name="left">');
document.write('<frame src='+content+' name="content">')
document.write('</frameset>');
document.write('</frameset>');
Danke für Eure Hilfe
</script>
Hi,
spontan fällt mir auf, daß Du das document weder aufmachst - open() - noch wieder zu machst - close()
http://selfhtml.teamone.de/javascript/objekte/document.htm#open
CU
Ronny
das kann gut sein, da der Explorer wesentlich mehr tolleriert wie der Netscape, open() und close() ist auf jedenfalls sauber.
Anmerkung: nach meinen eigenen Erfahrungen solltest du niemals ein (längeres) document.write() mit einem (kürzerem) document.writeln() mischen, das chaotischerweise der Quellcode im neuen Dokument vermischt wird, also nicht nacheinander abgearbeitet wird. Dafür habe ich lange gesucht
Danke Jungs!
Habe jetzt vor jedem document.write(); open() und danach close(); stehen - nur funktionieren tut´s leider deshalb immer noch nicht.
Hab´s nochmal unter obigen Link aktualisiert.
Danke für die Tipps!
Gruß,
Dave
Also!
Das geht nicht (ich habe:IE 5.0), weil:
1. open() und close() immer noch nicht da sind. Die übrigens vor und nach den gesamten write() sollen.
2. der Browser die Seite nicht neu läd, wenn Du zu einen Anker springs: ...#1
Lösung:
Das Script, das jetzt noch so einsam in der Datei test/test.htm rum steht, in eine Funktion packen und per Klick auf den jeweiligen Link mit dem entsprechendem Parameter aufrufen.
Viel Spaß,
Ronnny
Yipppeee!!!
Es scheint zu funzen!!!
Vielen dank! Super!
Werde noch etwas an dem Skript basteln und es dann hier posten -
damit jeder was davon hat.