Hallo,
Dein Problem laesst sich clientseitig loesen, aber es ist nicht ganz einfach,
was nicht heissen soll, dass es nicht perfekt funktioniert,
aber es verteilt sich auf mehrere Komponenten.
Jede HTML-Datei, von der Du glaubst, dass sie direkt aufgerufen werden kann
und die dann das Framset nachladen muss um sich im naechsten Schritt im MainFrame
selbst anzeigen zu koennen, muss im Header folgenden Eintrag haben:
Das Script, dass das Nachladen des Framesets besorgt, liegt in der oben genannten JS-Datei
named „framecheck.js“ (kann auch anders heissen).
Im body-Tag jeder Datei steht dazu noch folgendes:
Der Inhalt der Datei „framecheck.js“ sieht wie folgt aus:
/\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/
/\* Global definitions \*/
/\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/
var altPage = "./index.htm";
/\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/
/\* Checks how and where to find the menu entry page \*/
/\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/
function onCheckFrames(prmPage)
{
prmPage = (prmPage && typeof(prmPage)=="string") ? prmPage : altPage;
var thisPage = window.location.href.substring(window.location.href.lastIndexOf('/')+1);
var menuPage = prmPage.substring(prmPage.lastIndexOf('/')+1);
var menuPath = prmPage.substring(0,prmPage.lastIndexOf('/')+1);
if ((top != self.parent) || (top == self)) {
if (window.location.href.indexOf("FrontPage") != -1) {
/\* FrontPage 2000 cannot preview this script \*/
} else {
if (thisPage != menuPage) {
top.location.replace(menuPath+menuPage+'?'+thisPage);
} else {
top.location.replace(menuPath+menuPage);
}
}
}
self.focus();
}
Wenn eine solche Datei vollständig geladen ist, dann führt sie ueber den onload-Event die CallBack-Function „onCheckFrames()“ aus. „onCheckFrames()“ empfaengt ein Argument „prmPage“ in dem der Pathname zu der HTML-Datei steht, die das Frameset definiert. Ist kein Parameter vorhanden, dann wird ein default-Wert verwendet, was sich in diesem Fall hinter „altPage“ verbirgt. D.h. hier, das „./index.htm“ Dein Frameset definiert. Heisst Deine Frameset-Datei andern, so sollte path und name von „altPage“ entsprechend geaendert werden, oder Du gibt in der Datei folgenden Aufruf an:
Du kannst die Methode auch direkt aufrufen, indem Du das „onload“ im body weglaesst und folgendes anpasst in „framecheck.js“:
var altPage = "DefaultFramesetPathname";
function onCheckFrames(prmPage)
{
...
}
onCheckFrames("...");
In der Datei, die Dein Frameset definiert schreibst Du im Header folgendes rein:
function initInstance()
{
var aryPages = window.location.search.substr(1).split("&");
if (aryPages && aryPages[0].length) {
top.frames["MainFrameTargetName\_OrZeroBasedIndex"].location.replace(aryPages[0]);
} else {
/\* Make nothing or load any other page in the MainFrame. \*/
}
return(true);
}
/\* Use the following if you do not want onload-Event in the framset-tag. \*/
/\* window.onload = initInstance; \*/
...
Die Funktion „initInstance()“ kannst Du selbstverstaendlich auch in eine externe JS-Datei auslagern und wie bei „framecheck.js“ als script mit src-Pathname-Angabe vor dem „frameset“-Tag in der Frameset-Datei im Header einbinden.
Fuer „MainFrameTargetName_OrZeroBasedIndex“ muss der Index des MainFrame’s oder der Target-Name des MainFrame’s wie er im Frameset via id- oder name-Attribute angegeben ist, eingesetzt werden.
Die else-Klausel ist nicht notwendig wenn im Frameset schon unter src-eine Default-Datei angegeben ist.
ich persoenlich wuerde fuer src der MainFrame-Datei eine Dummy-Datei angeben und die else-Klausel ausfuellen mit dem entsprechen Aufruf, wenn keine Datei angegeben wurde.
Wie funktioniert das ganze?:
Wenn die Datei die im Frameset angezeigt werden soll, aufgerufen wird, dann laedt onCheckFrames() den href -> „./FramesetHtmlFile.html?./CalledMainFrameFile.html“ on top (also die Frameset-Datei mit Parameter via ? getrennt).
In „initInstance()“ wird der Location-Parameter gechopped (also „./CalledMainFrameFile.html“) und in den vorgesehenen MainFrame geladen (ersetzt also die zuvor geladene Dummy-Datei). Ist kein Parameter angegeben, dann wird in der else-Klausel entweder nix gemacht oder dort das gleiche wie im if-Zweig, nur mit Angabe einer Defaul-Datei.
Eine Dummy-Datei kann wie folgt aussehen:
Das src-Attribute im frame-Tag vom Frameset wuerde ich nicht leer lassen (Netscape4).
Statt
top.frames["MainFrameTargetName\_OrZeroBasedIndex"].location.replace(aryPages[0]);
kann oben auch stehen:
parent.frames["MainFrameTargetName\_OrZeroBasedIndex"].location.replace(aryPages[0]);
oder
top.frames["MainFrameTargetName\_OrZeroBasedIndex"].location.href = aryPages[0];
oder
parent.frames["MainFrameTargetName\_OrZeroBasedIndex"].location.href = aryPages[0];
Noch Fragen…? … dann bitte nicht an mich… 
Ciao