Kombilösung

Hier zeige ich dir, wie du dafür sorgen kannst, dass deine Seiten nie als Bestandteil eines fremden Framesets erscheinen können. Sie können einzeln in einem eigenen Fenster angezeigt werden, oder in deinem Frameset. Wenn du die gelb hinterlegten Teile weglässt, können sie auch nicht mehr einzeln, sondern nur noch als Bestandteil deines Framesets angezeigt werden. Wenn du das erreichen willst, solltest du dir aber überlegen, dass deine Besucher deine einzelnen Seiten nicht mehr in einem neuen Fenster für sich alleine öffnen können, und dass die Wartung und eventuelle Fehlersuche für dich in Zukunft sehr viel komplizierter wird, weil du die Seiten natürlich auch nicht mehr einzeln ansehen kannst.

Frameset

Zuerst musst du folgendes Script in den Headbereich des Quelltextes deines Start-Framesets schreiben:

<script type="text/javascript">
<!--
if (parent.frames.length != 0) parent.location="http://deine.sei.te/frameset.htm";
var variable = "rarjhebler654";
//-->
</script>

Erklärung:

<script type="text/javascript"> bewirkt, dass ab hier die Dokumentsprache JavaScript ist (also nicht mehr HTML).

<!-- Diese Zeile bewirkt, dass Browser, die kein JavaScript ausführen können, das folgende ignorieren. Das ist sinnvoll, weil die Browser sonst Fehlermeldungen zeigen würden.

if (parent.frames.length != 0) bedeutet: Wenn die Adresse des Elterndokuments (also des Framesets, die diese Seite enthält) nicht die selbe ist, wie die Adresse dieses Dokuments, dann führe aus, was hinter der runden Klammer steht. Diese Bedingung ist erfüllt, wenn es ein Elterndokument gibt. Anders ausgedrückt: Wenn die Seite Bestandteil eines Framesets ist, wird gemacht, was hinter der runden Klammer steht.

parent.location= "http://deine.sei.te/frameset.htm"; legt fest, dass die Adresse der Elternseite "http://deine.sei.te/frameset.htm" ist. "http://deine.sei.te/frameset.htm" musst du natürlich durch die URL deiner Startseite ersetzen. Beachte, dass die URL in Anführungszeichen stehen muss und dass die Zeile mit einem Semikolon endet.

var variable = "rarjhebler654"; Diese Zeile definiert eine Variable mit dem Namen variable und weist ihr den Wert rarjhebler654 zu. Du kannst die Variable auch anders nennen, wenn du willst. Der Wert ist beliebig. Du musst nur einen festlegen. Für die Vergabe des Namens gelten folgende Regeln: Er soll maximal 32 Zeichen lang sein, er darf nur aus Buchstaben und Ziffern bestehen, es sind Groß- und Kleinbuchstaben erlaubt. Groß- und Kleinschreibung werden unterschieden! (A und a sind 2 verschiedene Variablen). Er darf keine Leerzeichen enthalten. Er darf keine Umlaute oder scharfes S enthalten. Das einzige Sonderzeichen, das erlaubt ist, ist der Unterstrich "_". Er darf nicht mit einem reservierten Wort identisch sein. Reservierte Wörter sind: abstract, boolean, break, byte, case, catch, char, class, const, continue, default, delete, do, double, else , export, extends, false, final, finally, float, for, function, goto, if, implements, export, in, instanceof, int, long, native, new, null, package, private, protected, public, return, short, static, super, switch, synchronized, this, throw, throws, transient, true, try, typeof, var, void, while und with. Natürlich darfst du auch keinen Namen verwenden, den du an anderer Stelle auch verwendest. Jeder Name darf nur ein mal vergeben werden. Diese Variable ist praktisch das Erkennungszeichen deiner Seiten. Der Zweck wird in der Beschreibung des Scriptes für die geframten Seiten erklärt.

//--> Hier endet der Bereich, der von Browsern die kein JavaScript beherrschen ignoriert wird.

</script> Hier endet das Script und die Dokumentsprache ist ab hier wieder HTML.

Wenn deine Startseite einzeln aufgerufen wird, wird in diesem Script nur die Variable  mit dem Namen "variable" festgelegt. Wenn die Seite In einem fremden Frameset aufgerufen wird, wird statt dem fremden Frameset deine Startseite angezeigt.

Geframte Seiten (Seiten in Frames)

In die Seiten, die in deinem Frameset angezeigt werden sollen, musst du das folgende Script in den Headbereich des Quelltextes schreiben. Wie bereits erwähnt musst du die gelb hinterlegten Zeilen weglassen, wenn du erreichen willst, dass die Seiten nur in deinem Frameset angezeigt werden können. Du kannst das auch mischen. Du kannst bei einigen Seiten den Quelltext mit den gelb hintelegten Zeilen verwenden und in anderen Seiten den Quelltext ohne. Du kannst das Script auch in einzelnen Seiten ganz weg lassen, wenn du erlauben willst, dass die Seite in fremden Framesets erscheinen darf. Wenn du in deinem Startframeset weitere Framesets anzeigst, müssen diese auf jeden Fall das Script enthalten (egal ob mit oder ohne die gelb hinterlegten Zeilen) oder keine der in diesen Frameseiten gezeigten Seiten darf das Script enthalten.

<script type="text/javascript">
<!--
if (parent.variable != "rarjhebler654") {
  if (parent.frames.length != 0) {
    parent.location="http://deine.sei.te/frameset.htm";
  } else {
    variable = "rarjhebler654";
  };
} else {
  variable = "rarjhebler654";
};
//-->
</script>

Erklärung:

<script type="text/javascript"> bewirkt, dass ab hier die Dokumentsprache JavaScript ist (also nicht mehr HTML).

<!-- Diese Zeile bewirkt, dass Browser, die kein JavaScript ausführen können, das folgende ignorieren. Das ist sinnvoll, weil die Browser sonst Fehlermeldungen zeigen würden.

if (parent.variable != "rarjhebler654") { bedeutet: Wenn variable im Elterndokument nicht den Wert rarjhebler654 hat, wird gemacht was in der geschweiften Klammer steht. Nach der Klammer muss ein Zeilenumbruch im Quelltext erfolgen.

if (self.parent.frames.length != 0) { bedeutet: Wenn diese Seite eine Elternseite hat, dann führe aus, was in der geschweiften Klammer steht. Nach der Klammer muss ein Zeilenumbruch im Quelltext erfolgen. Diese Bedingung ist erfüllt, wenn es ein Elterndokument gibt. Anders ausgedrückt: Wenn die Seite Bestandteil eines Framesets ist, wird gemacht, was in der geschweiften Klammer steht.

parent.location="http://deine.sei.te/frameset.htm"; legt fest, dass die Adresse der Elternseite "http://deine.sei.te/frameset.htm" ist. "http://deine.sei.te/frameset.htm" musst du natürlich durch die URL deiner Startseite ersetzen. Beachte, dass die URL in Anführungszeichen stehen muss und dass die Zeile mit einem Semikolon endet.

} else { Wenn die Bedingung, die in der 4. Zeile steht, nicht erfüllt ist, also wenn es ein übergeordnetes Frameset gibt, wird statt dessen das folgende gemacht.

variable = "rarjhebler654"; Die Variable variable erhält auch in dieser Seite den Wert rarjhebler654.

}; Beachte, dass die Klammer und das folgende Semikolon alleine in einer eigenen Zeile stehen muss.

} else { In der folgenden geschweiften Klammer steht was gemacht wird, wenn die Bedingung in der 3. Zeile nicht erfüllt ist.

variable = "rarjhebler654" Die Variable variable erhält auch in dieser Seite den Wert rarjhebler654.

}; Auch diese Klammer und das folgende Semikolon müssen alleine in einer eigenen Zeile stehen.

//--> Hier endet der Bereich, der von Browsern die kein JavaScript beherrschen ignoriert wird.

</script> Hier endet das Script und die Dokumentsprache ist ab hier wieder HTML.

Das Script überprüft also, ob das Elterndokument die Variable variable kennt und ob deren Wert rarjhebler654 ist. Wenn das der Fall ist wird, im aktuellen Dokument auch eine Variable variable mit diesem Wert erzeugt. Wenn das nicht der Fall ist, wird überprüft, ob es überhaupt ein übergeordnetes Dokument gibt. Wenn ja, muss es ein fremdes Frameset sein. Dann wird die Startseite an Stelle des fremden Framesets geladen. Wenn nein ist alles OK und im aktuellen Dokument wird die Variable variable auch auf rarjhebler654 gesetzt.


Um einen Link zu setzen, der direkt auf diese Seite führt, verwende folgende Url: