SELFHTML/Navigationshilfen JavaScript/DOM Anwendungsbeispiele | |
Seitenanzeige in Frames verhindern |
|
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.
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.
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>
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.
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.
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>
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 | |
SELFHTML/Navigationshilfen JavaScript/DOM Anwendungsbeispiele |
© 2005 Impressum