Javascript zum Umleiten in frame

son gohan

Erfahrenes Mitglied
Hallo,

Ich habe hier ein Javascript welches meine Seiten im frameset laden soll, wenn die in den Suchmaschienen einzeln gefunden werden.

<script language="JavaScript" type="text/javascript">
// checking for frames
if(self.name==top.name){
location.href="index.html" // frameset-datei referenzieren
}
</script>

Aber an dem Script stimmt leider etwas nicht, es öffnet nur die index html im frameset, ist ja besser als garnichts, aber ich möchte, das es die jeweilige Seite im frameset öffnet. Zum Beispiel wir die auto.html gefunden, dann soll auch diese im frameset geöffnet werden. Wenn ich aber bei location.href="index.html" eine andere html Seite angebe, funktioniert garnichts mehr.

Wie muss man das ganze schreiben damit das im Internet funktioniert?
 
Zuletzt bearbeitet:
Hi,

vielleicht so etwas (geht aber nur, wenn sich Frames und Frameset im selben Ordner befinden)?

[Code im einzelnen Frame]
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.htm?" + pname;
        window.location = newURL;
    }
}
</script>
<body onLoad="freeMe()">
Zusammen mit dem hier im Frameset:
HTML:
<script language="JavaScript" type="text/javascript">
function getFrame() {
    if (window.location.search.toString().length > 1) {
        framename.src = window.location.search.toString().substr(1);
    }
}
</script>
<body onLoad="getFrame()">

Gruß
.
 
Zuletzt bearbeitet:
Hallo,

also ich habe alle Dateien im selben Ordner auf den Server geladen. Du hast mir zwei Codes geben, vielen Dank, wie muss ich die jetzt genau einbauen.

Den ersten Code in alle Html Seiten und den zweiten nur in die index.html mit dem frameset. oder wie meintest du das?

Gruß
 
Den ersten Code in alle Html Seiten und den zweiten nur in die index.html mit dem frameset. oder wie meintest du das?
Ja, genau.

Und wo ich "framename" geschrieben habe, kommt der Name Deines Frames hin. dabei ist es übrigens besser, den Frame über seine ID anzusprechen:
HTML:
document.getElementById("framename").src = window.location.search.toString().substr(1);

Gruß
.
 
Hallo,

ich habe es lokal auf meinem Rechner getestet, aber leider ohne Erfolg.

Den Code habe ich in meine index.html getan:

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

und den Code in eine Html Seite:

<script language="JavaScript" type="text/javascript">
function aktiv() { event.srcElement.className='active'; }
function inaktiv() { event.srcElement.className='inactive'; }
</script>
<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.htm?" + pname;
window.location = newURL;
}
}
</script>
<body onLoad="freeMe()">

Wenn ich die Seiten öffne, dann erscheint bei der Html Seite die Meldung kann nicht angezeigt werden und bei der index.html erscheint gar nicht.

Was hab ich denn da falsch gemacht. Und mit ID kenn ich mich leider nicht aus.
 
Hi,

index.html.src = window.location.search.toString().substr(1);
was soll das sein? Du musst die src-Eigenschaft des Frames ändern - gib dem Frame hierzu eine ID und sprich ihn so an, wie ich in meinem letzten Posting geschrieben habe.

Außerdem scheint es so, dass Deine Indexseite "index.html" und nicht "index.htm" heißt - Du musst diese Zeile
HTML:
 var newURL = "index.htm?" + pname;
so ändern, dass der Dateiname Deiner Indexseite verwendet wird.

Gruß

P.S.: ich habe es auch lokal getestet und es funktioniert (obwohl es sicher bessere Lösungen gibt).
.
 
Schuldige aber ich muss dich nochmal fragen, den ich bin ein ziemlicher Anfänger und kann Javascript eingentlich nur richtig einbauen, aber ändern nicht.

Also der erste Coder den muss ich ja nicht ändern oder? Wenn nicht, baue ich den Code in eine HTML Seite rein und die Seite wird dann wenn alles richtig gemacht ist im frameset geladen? Kann ich den ersten und zweiten Code an einer beliebigen Stelle einsetzen, oder muss er entweder in den head oder body Bereich?

Den zweiten Code muss ich also etwas ändern, beim Befehl: framename.src = window.location.search.toString().substr(1); muss ich anstelle von framename einen Wunschnamen hinschreiben. Den Wunschnamen muss ich aber auch noch in meinem Frame eingeben, Hm, als was wird ein Frame bezeichnet, ich habe eine index.html mit frameset Tags, wie du sie ja sicher auch kennst?

Dann muss ich noch diese Variable ändern: var newURL = "index.htm?" + pname; das habe ich geschaft.

Wenn ich dann alles richtig gemaht habe, dann mus sich also z.B. meine Auto.html im frameset öffnen?

Mein größtes Problem ist dann wohl das mit dem Frame benenen.
 
Hallo,

ich glaube das ich diesmal alles rictig eingesetzt habe, wenn ich jetzt meine auto.html aber öffne, dann öfnnet sich zwar das frameset, aber nicht die auto.html ist in dem Frame sondern meine willkommen.html erscheint.

Meine willkommen.html ist ja sozusagen die Startseite meiner Homepage. Sie wird auch im Frame mit scr benannt.

Das ist doch aber nicht die Funktion die ich wollte, ich brauche doch eine Funktion bei der die Seite im Frame erscheint, welche auch geöffnet wird, oder hab ich da wieder was falsch gemacht?
 

Neue Beiträge

Zurück