| # Seitenanzeige in Frames verhindern
| Hinweise zu diesem Beispiel Quelltext mit Erläuterungen Anzeigebeispiel: So sieht's aus

## 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 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 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.

## 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:

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 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:

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 oben beschriebene Script. In Opera dagegen wird lediglich der 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.

| Taschenrechner
| Zwei Frames gleichzeitig ändern

© 2007 Impressum