Mit Javascript fehlende Hauptdatei für IFrame nachladen
Martin
- javascript
Hallo alle zusammen,
vorab: Ich habe leider nicht so viel Ahnung von Javascript...HTML...etc. und hoffe, dass ich mich hier verständlich ausdrücke :-)
Folgendes Problem bekomme ich einfach nicht gelöst:
Meine Homepage besteht aus einer Hauptdatei in der mittig ein IFrame eingebettet ist. In dieses IFrame werden durch die Menüs auf der linken und rechten Seite davon die Unterseiten in das IFrame geladen.
Wenn nun jemand über eine Suchmaschine eine dieser Unterseiten findet, öffnet sich folglich nur diese Unterseite OHNE die Hauptdatei. Nun habe ich schon bei allen Unterseiten einen Link zur Startseite (Hauptdatei) gesetzt, aber diese Lösung finde ich nicht so optimal.
Ich habe schon versucht über ein Javascript (in einer Unterseite) automatisch auf die Hauptdatei zu verweisen, jedoch öffnet sich dann nur die Hauptdatei mit der im Quelltext voreingestellten IFrame-Seite und die Besucher müssen die Unterseite über die Menüs neu suchen.
Gibt es ein Script, dass automatisch die Hauptdatei lädt und auch noch die gefundene Unterseite anzeigt?
Ich bin dankbar für jede Hilfe
Viele Grüße
Martin
PS: Ich habe das Foru-Archiv gut durchstöbert und ein oder zwei Mal fast die gleiche Frage gefunden, allerdings wurde ich aus den Antworten nicht schlau :-(. Ich habe schon überlegt die Seite ganz umzustellen, aber ich fand das mit den IFrames ganz schön.
Hallo alle zusammen,
http://fastix.dyndns.org/tutor/JavaScript/fenster1.html
Da arbeitet das, was Du suchst gleich für Dich. Und erklärt bekommst Du es auch...
fastix
Danke für die schnelle Antwort.
Muss ich
this.frames.namedesframes.location.href=woher[1];
in
this.iframes.namedesframes.location.href=woher[1];
umbennen?
Martin
Hallo Martin!
Muss ich
this.frames.namedesframes.location.href=woher[1];
in
this.iframes.namedesframes.location.href=woher[1];
umbennen?
Äh... weiss ich jetzt gar nicht. Ich verwende keine iframes und habe mich damit nicht beschäftigt.
Nötigenfalls kannst Du es durchtesten.
if (window.frames.namedesframes) { Objekt="frames"; }
if (window.iframes.namedesframes) { Objekt="iframes"; }
alert (Objekt);
Hoffentlich hat Dein iframe einen Name...
fastix
Ich glaube das haut mit den IFrames nicht so ganz hin. Ich habe ja kein richtiges Frameset. Der IFrame ist in der Hauptseite eingebaut und als ich dann eben darauf kam, dass ich im (nicht vorhandenen) Frameset kein onload-Befehl habe, hab ich den onload-Befehl im IFrame eingebaut......das ergab reinstes Chaos :-)
Vielleicht gibt es ja noch ne Lösung für IFrames?
Vielleicht gibt es ja noch ne Lösung für IFrames?
Du musst beim Laden des iframes feststellen, ob er ein "Elternfenster" hat. Das höhste Element des Fensters ist das "window".
Du könntest also untersuchen, ob in Der gewünschte Aufruf steht:
Das Script also einfach inden header der iframe.html, nicht als function:
<script type="text/javascript">
<!--
if (window.location.href == "http://www.deinserver.de/iframe.html") {
window.location.href="http://www.deinserver.de/?iframe.html"
}
//-->
</script>
Damit leitet der im Hauptfenster geladene iframe sofort zur Startseite um.
Jetzt musst Du nur noch in der "Hauptseite" die übergebene Seite ermitteln auseinandernehmen:
<script language="JavaScript">
<!--
function lade() {
if(window.location.search != "")
window.frames.iframe_name.src=window.location.search;
// Kann aber auch sein, Du musst mit document.getElementsById(iframe_name).src=window.location.search;
ran *2) //
}
//-->
</script>
Voraussetzung ist:
<body onload="lade()">
...
<iframe name="iframe_name" id="iframe_name" src="iframe.html">
...
(Der iframe muss einen Name haben.
*2) Kann aber auch sein, der Browser will hier eine ID)
http://selfhtml.teamone.de/html/referenz/attribute.htm#iframe
Viel Glück!
fastix
Danke für die Hilfe!
Ich musste die Scripts ein wenig ändern. Auf jeden Fall klappt es jetzt, dass sich die gesuchte Seite incl. Hauptfenster öffnet. Allerdings bekomme ich nun beim "normalen" Betreten der Startseite folgenden Fehler angezeigt.
Line 12
Error: 'woher' ist undefined
Der Fehler erscheint aber nur mit dem IE, mit NN klappts ganz normal.
Hier das Script der Hauptdatei:
<script language="JavaScript">
function lade() {
if(window.location.search != "")
woher=window.location.search;
woher=woher.split("?"); //hier soll der Fehler stecken//
window.frames.start.location.href=woher[1];
}
//-->
</script>
Nehme alles zurück!
Es klappt wunderbar, ich habe die URL-Weiterleitung auf den Start-IFrame eingestellt.......DAAANNNNKKKEEEE!!!!
Nehme alles zurück!
Es klappt wunderbar, ich habe die URL-Weiterleitung auf den Start-IFrame eingestellt.......DAAANNNNKKKEEEE!!!!
Das ist aber nicht ganz Sinn der Sache. In dem Fall kannst Du nämlich ganz auf das Übertragen der eigentlich gewünschten URL verzichten... und statt dessen nur die index.html (oder wie die bei Dir heisst) umlenken.
Komplett ist das für die Benutzer kompfortabler.
Wie sieht eigentlich das Script in der "iFrame- Seite" aus?
fastix
Wie sieht eigentlich das Script in der "iFrame- Seite" aus?
So:
<script language="JavaScript">
<!--
// Script zum Verhindern der Anzeige dieser Seite im "Hauptfenster" //
if (parent.frames.length == 0) window.location.href="http://www.hamburg-point.de/meeresangler/start/frame.php?"+this.location.href;
-->
</script>
Martin
http://www.hamburg-point.de/meeresangler/start/frame.php
Da wäre es aber eine spur besser, wenn PHP bereits den richtigen iFrame einbauen würde.
<script type="Text/JavaScript">
<!--
// Script zum Verhindern der Anzeige dieser Seite im "Hauptfenster" //
if (parent.frames.length == 0) window.location.href="http://www.hamburg-point.de/meeresangler/start/frame.php?"seite=this.location.href;
-->
</script>
In der frame.php:
...
$seite="standardseite.html"
@$seite2=$HTTP_GET_VARS["seite"];
if ($seite2) {
$seite=$seite2;
}
...
<iframe ... src="<? print $seite ?>">
...
Das erspart dem Benutzer die mehrfache Umleitung und ist absolut sicher.
fastix
Danke für die Hilfe!
Ich musste die Scripts ein wenig ändern. Auf jeden Fall klappt es jetzt, dass sich die gesuchte Seite incl. Hauptfenster öffnet. Allerdings bekomme ich nun beim "normalen" Betreten der Startseite folgenden Fehler angezeigt.
Ja. Dann ist windows.location.search leer,
<script type="Text/JavaScript">
<!--
function lade() {
if(window.location.search != "") {
/* Nur, wenn da was drin steht */
woher=window.location.search;
if (woher) {
/* Sicherheitshalber noch mal... */
woher=woher.split("?"); //hier soll der Fehler stecken//
if (woher[1]) {
/* und Sicherheitshalber noch mal... */
window.frames.start.location.href=woher[1];
}
}
}
}
//-->
</script>
Wobei mir das rätselhaft ist. Es kann eigentlich _gar nicht_ funktionieren, weil eine geschweifte Klammer fehlt. Versuche als auch mal:
<script type="Text/JavaScript">
/* valide! (oder habe ich das verbockt?) */
<!--
/* die Kommentar- Einleitung fehlte */
function lade() {
if(window.location.search != "") {
/* Nur, wenn da was drin steht */
woher=window.location.search;
woher=woher.split("?");
window.frames.start.location.href=woher[1];
}
/* end if (Diese Klammer fehlte */
}
//-->
</script>
Danke, jetzt kommt der Fehler auch nicht mehr.
So sieht jetzt das Script in der Hauptseite/-Datei aus:
<script type="Text/JavaScript">
<!--
function lade() {
if(window.location.search != "") {
woher=window.location.search;
woher=woher.split("?");
window.frames.start.location.href=woher[1];
}
}
//-->
</script>
Die URL-Weiterleitung funktioniert jetzt also wie vorher auch. Super!