Hallo Programmierfreunde,
ich habe da folgendes Problem:
Gebe ich in die Adresszeile die Adresse einer HTML ein (abramis.html), die eigentlich in ein Frameset gehört (des Zusammenhangs halber), kann ich von dieser HTML in die Frameset-Datei springen, das Frameset laden und dort definieren und dann ausgeben. Das funktioniert auch, aber nur mit einer Datei, denn diese ist im Frameset definiert, siehe Script unten.
Da ich noch andere HTML habe, die geladen auf das Frameset zugreifen sollen, muß ich die 2. Framezeile für frame name="tree" dynamisch definieren, aber wie?
Hier erst mal das Script, ich habe zuerst die abramis.html dargestellt und darunter die Frameset-Datei, davor habe ich Zeilennummern geschrieben, die im Script aber nicht vorhanden sind:
1 <html><head><meta ...>
2 <script type="text/javascript">
3 var hwork;
4 parent.hwork = 160;
5
6
7 if (parent.uml != 1) { this.location = "frameset.html"; }
8 </script>
9 <title>Abramis</title>
10 <script type="text/javascript>
11 if (top.frames.length != 0) {top.document.title = document.title; }
12 </script>
13 <base target="tree">
14 </head>
15 <body>Text</body>
16 <script type="text/javascript">
17 parent.uml = 0;
18 </script>
19 </html>
1 <html><head><meta ...>
2 <script type="text/javascript">
3 function setRow() { document.getElementById("frhId").rows = "*," + parent.hwork; }
5 var uml;
6 parent.uml = 1;
7 </script>
8 <title>Frameset</title>
9 </head>
10 <frameset cols="150,*">
11 <frame name="main" noresize src="main.html" target="main">
12 <frameset id="frhId" rows="*,120" onLoad="setRow()">
13 <frame name="tree" src="abramis.html" target="tree">
14 <frame name="work" src="work.html" target="work">
15 </frameset>
16 <noframes>Text</noframes>
17 </frameset>
18 </html>
Wie man hier jetzt sehen kann: wird die erste Datei per Adresseingabe oder Verweis aufgerufen, wird sie in Zeile 7 auf die Frameset-Datei umgeleitet (Variable uml kennzeichnet nur, daß das ganze ein Mal passiert). In Zeile 13 der Frameset-Datei wird abramis.html wieder geladen, in den Frame "tree". Da uml jetzt 1 ist, wird Zeile 7 der oberen Datei jetzt ignoriert, und die Datei läuft durch. Beim Aktualisieren wird das Frameset neu geladen.
In Zeile 13 des Framesets steht also eine feste Datei drin, lade ich aber eine andere HTML per Adresseingabe, möchte ich dieses Verfahren genauso anwenden können, doch in Frame "tree" wird wieder abramis.html angezeigt - also müßte man Zeile 13 so abändern, daß die URL dynamisch ist.
Meine Überlegung war:
in abramis.html:
5 var ftree;
6 parent.ftree = document.URL;
in frameset.html:
4 function settree() { document.getElementById("treeId").src = parent.ftree; }
13 <frame id="treeId" name="tree" src="abramis.html" onLoad="settree()" target="tree">
Das funktioniert aber nicht, mit Variable uml hatte ich eine Dauerschleife zw. beiden Dateien verhindert, das funktioniert jetzt nicht mehr und die Datei abramis.html oder eine andere wird nicht angezeigt.
Was habe ich falsch gemacht?
Doc Taxon