Javascript zum Umleiten in frame

Poste bitte noch einmal den Quelltext beider Seiten, oder hänge die Dateien an (als ZIP-Archiv oder umbenannt in *.txt). - Kristallkugeln sind rar geworden im Forum. ;)

Gruß
.
 
Hallo,

hier meine index.html:

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<TITLE>feh</TITLE>
</head >
<frameset  rows="130,*,30">
	<frame name="titel" src="oben.html" marginwidth="10" marginheight="10" scrolling="no" frameborder="no">
	<frameset  cols="155,*">
		<frame name="warenkorb" src="links.html" marginwidth="10" marginheight="10" scrolling="auto" frameborder="no">
		<frame name="waren" id="npk" src="willkommen.html" marginwidth="10" marginheight="10" scrolling="auto" frameborder="no">
	</frameset>
	<frame name="warenkorb" src="unten.html" marginwidth="10" marginheight="10" scrolling="no" frameborder="no">
</frameset>
<noframes>
<script language="JavaScript" type="text/javascript">
function getFrame() {
	if (window.location.search.toString.length > 1) {
		npk.src = window.location.search.toString().substr(1);
	}
}
</script>
<body onLoad="getFrame()">
  <p>Diese Seite verwendet Frames. Frames werden von Ihrem Browser aber nicht unterstützt.</p>
  </body>
  </noframes>
</frameset>
</html>
</html>

Und hier meine auto.html:

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
 <title>auto</title>
<script language="JavaScript" type="text/javascript">
function freeMe() {
	if (self == top) {
		var pname = window.location.toString();
		pname = (pname.substr(pname.lastIndexOf("/") + 1));
		var newURL = "index.html?" + pname;
		window.location = newURL;
	}
}
</script>
<body onLoad="freeMe()">
</head>
<body> 
<div>Ein Auto kann man doch immer gebrauchen, wenn man auch einen Führerschein hat.</div> 
</body>
</html>
 
;) also zum dritten Mal: Wenn Du dem Frame zwar den Namen "waren" gibst, als ID aber "npk" vergibst, kannst Du ihn auch nicht mit "npk.src" beeinflussen. Machs, wie ich gesagt habe:
HTML:
document.getElementById("npk").src = window.location.search.toString().substr(1);
oder:
HTML:
waren.src = window.location.search.toString().substr(1);

Gruß
.
 
Hallo mein Freund,

ich habe dann die zweite Variante gewählt:
HTML:
 waren.src = window.location.search.toString().substr(1);

Das id="npk" habe ich rausgenommen aus dem Frame und auch im Javascript Code und dafür ausgetauscht mit waren:

HTML:
<script language="JavaScript" type="text/javascript">
function getFrame() {
	if (window.location.search.toString.length > 1) {
 	waren.src = window.location.search.toString().substr(1);
	}
}
</script>
<body onLoad="getFrame()">

Aber leider hat sich nichts geändert. In meiner auto.html habe ich ja nichts geändert da war ja alles in Ordnung, denke ich. Aber wenn ich die auto.html jetzt öffne, dann öffnet sich nach 2-3 Sekunden wieder die Seite im Framset, aber anstatt auto.html im Frame waren erscheint meine willkommen.html im Frame waren.

Das ist doch nicht richtig?
 
:-( Oh, sorry: mein Fehler diesmal!

Weil ich das ganze mit anderen Dateinamen und Alertboxen getestet habe, habe ich eine Zeile "blind" getippt, statt sie aus der funktionierenden Version zu kopieren: die Methode toString() benötigt natürlich Klammern (habs im ersten Post korrigiert).

So sollte es funktionieren:

[Unterseite]
HTML:
<script language="JavaScript" type="text/javascript">
function freeMe() {
	if (self == top) {
		var pname = window.location.toString();
		pname = (pname.substr(pname.lastIndexOf("/") + 1));
		var newURL = "index.html?" + pname;
		window.location = newURL;
	}
}
</script>
<body onLoad="freeMe()">
[Frameset]
HTML:
<script language="JavaScript" type="text/javascript">
function freeMe() {
	if (window.location.search.toString().length > 1) {
		document.getElementById("waren").src = window.location.search.toString().substr(1);
	}
}
</script>
<body onLoad="freeMe()">
und gib dem Frame bitte auch die ID "waren" - getElementById funktioniert in jedem Browser, und das Ansprechen über den Namen hat zumindest im Firefox eine Warnung ausgelöst.

Gruß

EDIT: @Sven (einen Post tiefer) : oha! auch das ist mir völlig entgangen - klar, die Funktion muss in den Head-Bereich.
.
 
Zuletzt bearbeitet:
Das kann so nicht funktionieren.... weil die Funktion überhaupt nicht aufgerufen wird.

Die Funktion und deren Aufruf stehen im <noframes>-Tag... und dieser interessiert Browser, welche Frames kennen, nicht die Bohne.
Packe das Skript in den <head> und rufe es per onload im ersten <frameset>-Tag auf... wenn du dann Datics Hinweise noch in die Tat umsetzt, sollte es hinhauen :)
 

Neue Beiträge

Zurück