Harald Gabler: Frames nachladen

Hallo!

Um das Frameset bei einer allein aufgerufenen Unterseite nachzuladen, habe ich das Script von SelfAktuell angepasst. Jetzt wird auch das dazugehoerige Inhaltsverzeichnis geladen.

Da meine JavaSript-Kenntnisse nur rudimentaer sind, moechte ich bitte, ob jemand das Script kurz ansehen koennte. Unter IE 4.01 und NS 4.5 laeuft es ja (ueberraschenderweise;-)) perfekt, allerdings weiss ich nicht, ob das auch bei anderen Umgebungen so ist bzw. ob ich alle Eventualitaeten beruecksichtigt habe.

Hier also die beiden Scripts:

LIVE.HTM
--------

<head>
<script language="JavaScript">
<!--
function checkFrames()
{
if(!parent.wcndisplay)
location.href="frameset.htm?" + location.pathname + "B";
}
//-->
</script>
</head>

<body onLoad='checkFrames()'>

FRAMESET.HTM
------------

<head>
<script language="JavaScript">
<!--
function setFrames()
{
if(location.search)
{
if(location.search.substr(location.search.length-1,1) == "A") frames.wcncontent.location.href="content.htm";
if(location.search.substr(location.search.length-1,1) == "B") frames.wcncontent.location.href="themecnt.htm";
frames.wcndisplay.location.href=location.search.substr(1,location.search.length-3);
}
else
{
top.location.href="../index.htm";
}
}
//-->
</script>
</head>

<frameset cols="170,*" border=0 frameborder=0 framespacing=0 onLoad="setFrames()">
<frameset rows="210,*" border=0 frameborder=0 framespacing=0>
   <frame src="logo.htm" name="wcnlogo" marginwidth=0  marginheight=5 noresize scrolling=no>
   <frame src="content.htm" name="wcncontent" marginwidth=0  marginheight=0 noresize>
</frameset>
   <frame src="edit.htm" name="wcndisplay" noresize>
</frameset>

Die Datei live.htm ruft frameset.htm auf und laedt den richtigen Inhalt (erkennbar am Menuepunkt "Live Stream") und live.htm nach. Ruft jemand frameset.htm ohne Parameter auf, wird er auf die Indexseite der Praesenz verwiesen.

Hier die Links:
http://www.netcamera.de/wcn/live.htm
http://www.netcamera.de/wcn/frameset.htm

Besonders interessieren wuerde mich, ob das auch mit den 3er-Versionen von IE und NS und IE 5.0 laeuft bzw. ob zumindest keine Fehlermeldungen kommen.

Leider werden die neuen Seiten erst dann geladen, wenn die aus dem Frameset vollstaendig aufgebaut sind. Kann man das irgendwie beschleunigen? Ich wuerde sonst einfach leere Seiten im Frameset angeben.

So, ich hoffe mein Anliegen ist nicht zu unverschaemt.

Viele Gruesse
Harald

  1. Hallo Harald

    Da meine JavaSript-Kenntnisse nur rudimentaer sind, moechte ich bitte, ob jemand das Script kurz ansehen koennte. Unter IE 4.01 und NS 4.5 laeuft es ja (ueberraschenderweise;-)) perfekt, allerdings weiss ich nicht, ob das auch bei anderen Umgebungen so ist bzw. ob ich alle Eventualitaeten beruecksichtigt habe.

    Wenn Du kompatibel zu alten Hobeln bleiben willst, sind folgende Zeilen problematisch:

    if(location.search.substr(location.search.length-1,1) == "A") frames.wcncontent.location.href="content.htm";
    if(location.search.substr(location.search.length-1,1) == "B")

    Denn die Methode substr() wird erst von neueren Browsern unterstuetzt.

    Probier mal, sie an beiden Stellen zu ersetzen durch:

    location.search.substring(location.search.length-1,location.search.length)

    Wenn das klappt, solltest Du die letztere Variante mit substring() auf jeden Fall bevorzugen, denn diese Methode kennen auch Browser vor der 4er-Generation.

    viele Gruesse
      Stefan Muenz

    (ich hoffe, ich hab mich jetzt nicht vertan, mit den beiden Methoden steh' ich bekanntlich auf Kriegsfuss <g>)

    1. Hallo Stefan!

      Danke für Deine Antwort. Wenn ich mal weiss wo ich ansetzen muss, kriege ich das schon irgendwie hin.

      Viele Gruesse
      Harald

  2. Hallo Harald,

    Besonders interessieren wuerde mich, ob das auch mit den 3er-Versionen von IE und NS und IE 5.0 laeuft bzw. ob zumindest keine Fehlermeldungen kommen.

    Der MSIE 3.02 bringt nach dem Nachladen des Framesets folgende JS-Fehlermeldung:

    Microsoft JScript runtime error

    [Zeile: 16] 'wcncontent' ist kein Objekt

    Mit NN 4.5 hat's bei mir funktioniert.

    Leider werden die neuen Seiten erst dann geladen, wenn die aus dem Frameset vollstaendig aufgebaut sind. Kann man das irgendwie beschleunigen? Ich wuerde sonst einfach leere Seiten im Frameset angeben.

    Ich habe das auf meinen Seiten etwas anders gelöst. Hier wird das fehlende Frameset direkt mit der richtigen Seite nachgeladen, indem die Frameset-Definition mittels document.write() dynamisch erstellt wird.

    Gruß,
    Stefan

    1. Hallo Stefan!

      Danke für den Test und den Tip mit document.write(). Mal sehen, wie ich die Fehlermeldung verhindern kann.

      Viele Gruesse
      Harald