SELFHTML

Seitenanzeige in Frames verhindern

Informationsseite

nach unten Hinweise zu diesem Beispiel
nach unten Quelltext mit Erläuterungen

Beispiel-Seite Anzeigebeispiel: So sieht's aus

 nach unten 

Hinweise zu diesem Beispiel

Wenn Sie eigene WWW-Seiten erstellen, werden Sie kaum wollen, dass Ihr prachtvolles Werk in einem kleinen Fenster einer fremden Seite angezeigt wird. Dies ist jedoch mit Hilfe von Kapitel Frames problemlos möglich, und es gibt einige Web-Guide-Projekte, die unverschämt genug sind, fremde Projekte als "Schaufenster" im eigenen Projekt anzuzeigen. Lesen Sie dazu auch den Abschnitt über Seite unfaire Schaufenster-Effekte.

Mit einem kleinen JavaScript können Sie erzwingen, dass Ihre eigenen Seiten beim Aufruf in jedem Fall das gesamte Browser-Fenster ausfüllen. Das Script erzwingt die Anzeige einer HTML-Datei im Vollbild, wenn eine andere Seite versucht, die Datei in ein Frame-Fenster zu laden. Auf "normale" Verweise und Aufrufe der Datei hat das Script keine Auswirkungen.

nach obennach unten

Netscape 2.0MS IE 3.0Opera 5.12Mozilla Firefox 1Konqueror 3.1Safari 1.0 Quelltext mit Erläuterungen

Das Beispiel zeigt die Datei, die das Geladenwerden in ein Frameset verhindert. Die Dateien, die im Anzeigebeispiel zum Frameset gehören, sind für das Verständnis ohne Bedeutung.

Beispiel:

Beispiel-Seite Anzeigebeispiel: So sieht's aus

<html>
<head>
<title>Seitenanzeige in Frames verhindern</title>
<script type="text/javascript">
if (top != self)
  top.location = self.location;
</script>
</head>
<body>

<h1>Keine Chance für Schaufenster-Anbieter!</h1>

</body>
</html>

Erläuterung:

Das kleine JavaScript im Beispiel sollte im Kopf jeder HTML-Datei stehen, die Sie nicht in fremden Frames sehen möchten. Das Script wird beim Laden der Datei automatisch ausgeführt, da der Code nicht in einer Funktion gebunden ist. In dem Code - er besteht aus einer einzigen Seite bedingten Anweisung - wird mit top != self abgefragt, ob die oberste Referenzebene der eigenen Ebene entspricht. Ist self, also das eigene Fenster, gleichzeitig auch das oberste Fenster (top), dann ist alles in Ordnung, und die Anweisung, die von der Bedingung abhängt, wird nicht ausgeführt. Ist dagegen self nicht das gleiche wie top, bedeutet dies, dass irgendwelche Frames angezeigt werden. In diesem Fall wird die Anweisung top.location = self.location ausgeführt. Mit dieser Anweisung erzwingen Sie, dass die aktuelle Datei auf jeden Fall im gesamten Anzeigefenster des Browsers angezeigt wird.

Beachten Sie:

Bei Opera 5.12 haben Sie keinen Zugriff auf die oberste Fensterebene top, wenn diese nicht zur eigenen Domain gehört. Sie können jedoch über einen Umweg auch diesen Browser dazu veranlassen, das Frameset zu sprengen. Dazu müssen Sie dafür sorgen, dass ein Verweis mit der Eigenschaft target="_top" angeklickt wird.

Beispiel:

Beispiel-Seite Anzeigebeispiel: So sieht's aus

<html>
<head>
<title>Seitenanzeige in Frames verhindern</title>
<script type="text/javascript">
if (top != self) {
  if (window.opera) {
    window.onload = opera_befreien;
  } else {
    top.location = self.location;
  }
}

function opera_befreien () {
  document.links["befreien"].click();
}
</script>
</head>
<body>

<a name="befreien" href="seitenanzeige_opera.htm" target="_top"></a>

<h1>Keine Chance für Schaufenster-Anbieter!</h1>
</body>
</html>

Erläuterung:

Innerhalb der Seite befindet sich ein unsichtbarer Verweis (Verweis ohne Verweistext) namens befreien. Dieser Verweis besitzt als Zielfenster _top und als Verweisziel die Seite selbst. Wird nun beim Laden der Seite festgestellt, dass diese sich innerhalb eines fremden Framesets befindet, so verwenden alle Browser außer Opera das nach oben oben beschriebene Script. In Opera dagegen wird lediglich der Seite Event-Handler onload initialisiert. Der Aufruf window.onload = opera_befreien hat die Aufgabe, nach dem Laden der Seite die Funktion opera_befreien() aufzurufen. Innerhalb der Funktion passiert nichts weiter, als dass der Verweis mit der Methode click() angeklickt wird. Diese undokumentierte Methode funktioniert mit allen Identifikationseinstellungen von Opera. Das Verweisziel lädt sich in die oberste Fensterebene und sprengt das Frameset.

 nach oben
weiter Seite Taschenrechner
zurück Seite Zwei Frames gleichzeitig ändern
 

© 2005 Seite Impressum