Hallo,
Nette Sache!
Ja ist schon witzig. Aber was mich wundert, ist eigentlich der Kommentar, der vermuten laesst, solche Effekte lassen sich nur durch einen Bug erreichen.
Oder ist der gar nicht so gemeint?
Egal.
Es geht um diese "Anweisung", die eigentlich keine ist:
window.document.Header,moveTo(a,b);
Das Versehen des Programmieres bestand darin, dass er statt Punkt Komma getippt hat.
Das moveTo() sollte sich auf den Layer window.document.Header beziehen.
Und an der Stelle haette der Browser IMHO mit "Fehler" reagieren muessen. Tut er nicht, ihn stoert das Komma nicht weiter, er betrachtet das, was dahinter steht als eigene Anweisung:
moveTo(a,b)
Und die bewegt das Fenster, weil sich moveTo() standardmaessig auf window bezieht.
Interessant wird es jetzt.
Dieses window ist eigentlich ein Frame.
Aber was passiert?
- Navi4:
Die in moveTo() angegebenen Koordinaten werden augenscheinlich auf das uebergeordnete
Fenster bezogen, oder besser, die ganze Anweisung wird darauf uebertragen,
denn eigentlich wird self.top bewegt. - MSIE4:
Der bleibt tatsaechlich bei self, uebertraegt nicht auf self.top.
Und wirklich: der Frame tanzt innerhalb des Fensters.
Der Effekt selber, eine Fenster auf dem Bildschirm tanzen zu lassen, ist auch durch fehlerfreies JavaScript erreichen.
Probiert es aus, kopiert Euch die Seite http://www.multimedialisten.de/h_bug.htm, ersetzt die fehlerhafte Zeile durch ein korrektes
moveTo(a,b);
Damit kann man am 1.April so manchen User schocken.
Sowas sollte man ganz praktisch, so wie viele andere Moeglichkeiten, wirklich nur sehr ueberlegt benutzen, eben am 1.April oder fuer irgendwelche ganz bewussten Gags, die als solche gemeint und erkennbar sind. Ansonsten lacht der Besucher sicher maximal einmal darueber.
Am meisten gefällt mir aber dabei, es nicht nur möglich ist das ganze Browserfenster zu bewegen sondern auch ein Fenster in einem FrameSet.
Nur bei MSIE (s.o.)
Christine