• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Laufzeitfehler IE5

Nexus

New member
Beim laden der index-Datei kriege ich folgende Meldung vom IE5:

Laufzeitfehler:'top.Main.frames[...].location' ist kein Objekt

Ich verwende folgende Funktion (in der index-Datei), welche ich vom "Navigation"-Frame mit den entsprechenden Parametern aufrufe:

function load4Frames(URL1,URL2,URL3,F3,URL4,F4){
top.Navigation.location.href = URL1;
top.Main.location.href = URL2;
top.Main.frames[F3].location.href = URL3;
top.Main.frames[F4].location.href = URL4;
}

Die erste Zeile der Funktion wird allerdings korrekt ausgeführt. Danach kriege ich die Fehlermeldung.

Was mache ich hier falsch???
 
Zuletzt bearbeitet:
hat dein -> Main hat auch frames? wenn ja dan schreib:

top.Main.parent.frames[F3].location.href = URL3;
top.Main.parent.frames[F4].location.href = URL4;

und was ist hier -> [F3] und [F4] ?
 
Zuletzt bearbeitet:
Index besteht aus
- Navigation (linker Frame)
- Main (rechter Frame)

Main besteht aus
- Top (Frame oben)
- Content (Frame unten)

In [F3] und [F4] gebe ich den Wert vom Child-Frame mit. Zum Beispiel frames[0] und frames[1]. Verstehst Du was ich meine?

Ich habe Dein Vorschlag umgesetzt. Das Resultat war teilweise ok. Das heisst, URL3 und URL4 werden geladen, aber in die falschen Frames. URL3 ersetzt Navigation und URL4 ersetzt Main. Richtig wäre URL3 ersetzt Top und URL4 ersetzt Content.
 
parent.Main.parent.frames[0].location.href = URL3;
parent.Main.parent.frames[1].location.href = URL4;

oder:

parent.FrameName1.location.href = URL3;
parent.FrameName2.location.href = URL4;
 
mit alert(); gehts - sonst nicht

Meine Funktion sieht jetzt so aus:

<script language="JavaScript1.1"><!--
function load4Frames(URL1,URL2,URL3,URL4){
top.Navigation.location.replace(URL1);
top.Main.location.replace(URL2);
//alert(URL2);
top.Main.frames[0].location.replace(URL3);
top.Main.frames[1].location.replace(URL4);
}

Das Merkwürdige an dieser ganzen Sache ist, dass wenn man die Funktion alert(); in der dritten Zeile einfügt, dann funktioniert es tadellos! Wenn ich es aber wieder entferne, dann kriege ich wieder die Fehlermeldung "Laufzeitfehler:'top.Main.frames[...].location' ist kein Objekt".

Was kann ich tun, damit es dieses alert(); nicht braucht? Was tut es ausser ein Pop-up Fenster zu generieren?
 
das ist wohl einfach, :)
deine seite die enthält diese frames ist noch nichtgeladen zu der zeitpunkt wird, mit alert hast du zeit verzögerung ...
 
setTimeout funktioniert auch nicht!

Ich habe die Zeitverzögerung mit setTimeout erreichen wollen, aber leider ohne Erfolg.

Ich habe die Variablen der Übergabeparameter als globale Variablen definiert. Der Code sieht jetzt folgendermassen aus:

var URL3, URL4

function loadFrames(URL3,URL4){
top.Main.frames[0].location.replace(URL3);
top.Main.frames[1].location.replace(URL4);
}

function load2Frames(URL1,URL2,URL3,URL4){
top.Navigation.location.replace(URL1);
top.Main.location.replace(URL2);
setTimeout("loadFrames(URL3,URL4);",5000);
}

Theoretisch sollte nun der Funktionsaufruf "loadFrames(URL3, URL4);" 5 Sekunden später erfolgen. Das Resultat entspricht aber leider nicht der Theory. Ich kriege nun die Fehlermeldung 5 Sekunden später.

Mache ich hier etwas falsch? Gibt es vielleicht eine bessere Lösung?
 
probier mal das function aus der body mit onLoad vom deine geladene frame seite auszurufen, damit brauchst du keine zeit verzogerung und immer auf der sichere seite
 
Ich denke ich weiss in etwa was Du meinst. Ich habe aber nicht verstanden wie. Könntest Du bitte ein wenig ausführlicher sein?

Sollte der onLoad() Event-Handler im Main stehen?
 
du rufst deine seite in Mein frames diese seite hat auch zwei oder mehr frames :) !

dann pack in deine seite die du in Main frames lädst onload="top.loadFrames(URL3,URL4);"
und die wird weitere seiten laden oder was du auch wilst

aber darf ich auch fragen?
warum machst du alles so kompliziert?

erstell einfach dein script und verbinde der in start seite (die alle frames enthält) alle functionnen werden mit top.functionName(); abgerufen
alle andere functionen in seiten selbst rufst du mit : parent.FrameName.functionName (); auf ...

gruss
 
Zurück
Oben