Multimediakurs Leinfelder: Modul 11 - Anlagen: Forced Frames und Vermeidung von Webnapping - Troubleshooting

(© copyright)     Letzte Änderungen:28.03.2003


Position innerhalb des Kurses

Modul 11: Anlage 13b: Troubleshooting zu
"Immer-mit-Frames" und Vermeidung von Webnapping

von Reinhold Leinfelder

Diese Seite ergänzt die Erläuterungen in Anlage 13.

Da auch der Kursleiter schon seit längerem seine Probleme mit Scripten zu Forced Frames hat, seien einige dieser Erfahrungen kurz festgehalten, damit Sie sich ggf. Arbeit ersparen:


Browserkompatibilität bei Verwendung "normaler" Frames und das Offline-Problem

Die Skripte 1, 1b und 2 von Anlage 13 zu Forced Frames wurden mit Netscape 4.5, Netscape 6.0, Internet Explorer 5.0 und Opera 5.0 (alles für Mac) getestet. Hierbei laufen unter Opera die Skripte nicht im Offline-Modus (- die Frameset-Seiten werden ewig geladen und erscheinen nie), online funktioniert jedoch alles (muss man erst mal drauf kommen :-(

Ggf. funktionieren auch andere Browser nicht offline, obwohl online alles wunderbar läuft (siehe Frames in Frames-Problem).


Falsch gesetzter Onload-Handler: Ein Fehler, auf den ich zuerst auch hereingefallen bin: der onload-Eventhandler zum Skriptaufruf auf der Frameset-Seite darf nicht im Body-Tag eingebaut werden, sondern im Frameset-Tag. Wenn das Skript nicht funktioniert, kontrollieren Sie dies bitte als erstes. Näheres in Anlage 13.


Das Frames in Frames-Problem:

Vielleicht haben Sie einen Domainnamen bei einem Provider registriert, Ihre Webseiten liegen jedoch auf einem ganz anderen Server. Der Provider routet den Namen dann häufig auf einen seiner Server und leitet von dort mit einem sog. stealth-redirect ("getarnte Umleitung") um. So trifft es z.B. auch für die www.palaeo.de-Seiten zu. Wenn Sie www.palaeo.de aufrufen, wird ein relativ komplizierter Frameset geladen. Wenn Sie jedoch den Sourcecode dazu ansehen wollen, sieht der absolut einfach aus. Sie sehen nur einen Frameset, bestehend aus einem oberen, auf 100% Höhe skalierten Frame sowie einen unteren, der also nie zu sehen ist. Alles weitere spielt sich dann im oberen Frame ab.

Ein entsprechender Quellcode sieht z.B. folgendermaßen aus:

<html>
<head> <title>die Soundso-Site</title>
</head>
<frameset rows="100%,*">
<frame src="http://145.83.33.22/soundsosite/index.html" name="haupt" noresize>
<frame src="white.html" name="white" noresize>
</frameset>
<body>
<p></p>
</body>
</html>

Der Provider lässt also diesen unsichtbaren Frameset laufen und lädt Ihre Startseite in den einzig sichtbaren Frame, das ganze nennt man stealth redirect (wenn Sie ein besonders billiges Angebot haben, ist der andere Frame auch sichtbar, dort lädt der Provider dann laufend Reklame rein). Alles andere spielt sich dann in diesem Hauptframe ab, der als solcher nicht erkennbar ist.

Wenn in diesem unsichtbaren Hauptframe nun eine weitere Seite mit Frameset-Definitionen geladen wird, haben wir Frames in Frames (ähnlich wie verschachtelte Tabellen). Damit haben viele der frei verfügbaren ForceFrame-Skripte Schwierigkeiten.

Bei Verwendung des Originalskripts von M. Wernecke funktionierte tatsächlich der NN 6 in einem derartigen Frame-in-Frame-Szenario nicht. Ursache war der absolute Link im Skript. Aus diesem Grund habe ich das Skript auf relative Links umgestellt.

Der NN6, aber z.T. auch andere Browser bockten in einem Frame-in-Frame-Szenario auch, als ich versuchte, die Skripte etwas exakter an JavaScript-Syntax anzupassen. Statt location.href="sounso.html" verwendete ich das korrektere parent.location.href (bzw. window.location.href). Wegen der Verschachtelungen gab es dann aber Fehlermeldungen, da teilweise nicht klar war, worauf sich parent bezog. In der vorliegenden Form sollten die Skripte auch in Frame-in-Frame-Szenarien ablaufen.

Sie können dies hier testen:

Beispiel 2 lädt zuerst einen derartige unsichtbare Framesetseite (index0.html) in das Fenster "test". Von der Framesetseite ist wie oben beschrieben nur ein 100%-Frame zu sehen ist. Dahinein wird dann die eigentliche index.html-Seite unseres Beispiels geladen. Spielen Sie mit dem Beispiel und verschiedenen Browsern herum, um zu sehen, ob alles funktioniert. Sie erkennen das Vorhandensein des äußeren, unsichtbaren Framesets am Browserfenstertitel 'frameinframe'

Beispiel 2 - Frames in Frames

Opera bockt nach wie vor offline, läuft aber ebenfalls problemlos online.


Für evtl. Fehlermeldungen mit anderen Browsern (und Plattformen) bin ich dankbar. rleinfelder@web.de

Zurück zur Anlage 13

Weitere Möglichkeiten für benutzerkontrollierten Aufruf des ForceFrame-Skriptes mit Hinweisen (Anlage 13c)

© R. Leinfelder und Paläontologie München, letzte Änderung 28.03.2003


Inhaltsseite

Anlagenverzeichnis