Anzeige nur im Frameset
Eine automatisierte Weiterleitung zum Frameset erfolgt, falls lediglich eine Unterseite aufgerufen wurde. Vor der Weiterleitung wird (wenn sie möchten) eine Alert-Meldung eingeblendet.
HTML-Seite immer im Frameset anzeigen
Suchmaschinen finden auch Unterseiten Ihrer Homepage und lassen natürlich auch deren Aufruf zu. Sie sind also gut beraten, auf jeder Unterseite einen Link auf die Startseite einzurichten, damit der Besucher auch den weg zu ihrem gesamten Projekt finden kann.
Ihre Seite besteht aus mehreren HTML-Dokumenten in Frames. Sie möchten verhindern, das Unterseiten ihrer Präsenz außerhalb des Framesets angezeigt werden
Arbeitsweise
Der Browser erstellt beim Aufruf einer Seite auch eine Liste der Frames. Wenn es sich um eine einzelne HTML-Seite handelt, ist die Länge der Liste aller Frame Null, weil sie keine Einträge enthält.
Ein kleines JavaScript stellt die Anzahl der Frames fest und vergleicht das Ergebnis mit ihrer Vorgabe.
|
|
Beispiel der Prüfung
... ist die Länge der browserinternen Liste aller Frames kleiner als 1 (also Null) ?
... dann wird die Seite nicht im Frameset angezeigt.
if(top.frames.length < 1)
- Gehe in der Struktur der Frames nach ganz oben
- Prüfe wie viele Frames gezählt wurden
- Ist die Zahl kleiner als 1 (keine 2 Frames vorhanden), dann tu was
Ein Frameset hat mindestens 2 Frames. Bei der Prüfung sollten mindestens 2 Frames gezählt werden. Falls das nicht so ist, wird eine Aktion ausgelöst.
1) Sie können eine Alertmeldung anzeigen lassen die der User quittiert (OK) und danach die Startseite (Frameset) aufrufen.
2) Sie können ohne Zwischenschritt mit Alert-Meldung sofort die Framesetdatei aufrufen lassen.
Das Script
Wenn sie eines der beiden Scripte in den HEAD-Bereich ihrer HTML-Datei einkopieren, wird beim Aufruf der Datei außerhalb eines Framesets die Umleitung auf die Frameset-datei eingeleitet. Das Script kann natürlich auch in einer externen JavaScript-Datei stehen.
1) mit Alert-Meldung

<script type="text/javascript" language="JavaScript">
<!--
if(top.frames.length < 1)
{
// zwischen den Anführungszeichen Meldungstext eintragen
// \n = Befehl für "neue Zeile" bei JavaScript
alert("Willkommen auf meiner Homepage ! \n\n
Sie haben diese Seite nicht über meine Hauptseite aufgerufen \n
und können daher nicht alle Seiten besuchen. \n\n
Das Menü würde nicht angezeigt werden. \n\n
Bitte klicken Sie auf OK um zur Hauptseite zu gelangen!") ;
// hier den Namen für die Startseite eintragen
top.location.href="index.htm";
}
// alle Zeilenumbrüche vor dem 1. Semikolon entfernen.
// -->
</script>
2) ohne Alert-Meldung

<script type="text/javascript" language="JavaScript">
<!--
if(top.frames.length < 1) top.location.href="index.htm";
// -->
</script>
relativer Link auf die Frameset-Datei
Der Eintrag 'index.htm' im Beispiel oben verweist auf die Frameset-Datei, die im gleichen Ordner abgelegt ist. Wird das Script in eine HTML-Datei eingebunden, welche in einem Unterverzeichnis liegt, muss der Pfad entsprechend eingetragen werden. Beispiel:

<script type="text/javascript" language="JavaScript">
<!--
if(top.frames.length < 1) top.location.href="../index.htm";
// -->
</script>
Das ist sehr fehlerträchtig! Müssen sie doch jedesmal auf den exakten Eintrag achten.
absoluterer Link auf die Frameset-Datei
Sicherer, und auch für die zentrale Einbindung des Scripts innerhalb einer exterenen JavaScript-Datei ist der Eintrag einer absoluten Adresse der Frameset-Datei. Beispiel:

<script type="text/javascript" language="JavaScript">
<!--
if(top.frames.length < 1) top.location.href="http://www.clickstart.de";
// -->
</script>
So stimmt der Verweis immer, egal aus welchem Unterverzeichnis ihrer Web-Präsenz die Frameset-Datei aufgerufen wird!

|