Browserfenstergröße oder die Browserfensterposition ändern
Es ist möglich, die Browsergröße und -position mittels JavaScript zu ändern. Hierzu bedarf es der JavaScriptbefehle für
die Größenänderung: resizeTo(x,y)
die Positionsänderung: moveTo(x,y) bzw. moveBy(x,y)
wobei x und y für die neuen Maße bzw. die neue Position (von links oben aus gesehen) stehen.
Beispielhaft
JavaScript-Befehle zum
Ausmessen/Ansteuern
Vom Browser
zurückge-
gebener Wert
screen.width
screen.height
screen.availWidth
screen.availHeight
self.outerWidth
self.outerHeight
window.outerWidth
window.outerHeight
top.frames.innerWidth
top.frames.innerHeight
self.innerWidth
self.innerHeight
window.innerWidth
window.innerHeight
top.frames.document.body.offsetWidth
top.frames.document.body.offsetHeight
parent.frames.document.body.offsetWidth
parent.frames.document.body.offsetHeight
self.frames.document.body.offsetWidth
self.frames.document.body.offsetHeight
document.body.offsetWidth
document.body.offsetHeight
Bitte beachten:
Normalerweise interessiert den WebDesigner das Browserinnenmaß, da er die darzustellenden Inhalte entsprechend optimiert. Jedoch wird mittels Resize-Funktion die Fenstergröße verändert - unabhängig von den angezeigten Navigations-/Bedien-Elementen (Suchen, Favoriten, Verlauf, Standard-Schaltflächen, Adressleiste, Links, Radio usw.) - der NN 4.x machte hier noch eine Ausnahme, indem er das Browserinnenmaß ansprach.
Framesets müssen besonders berücksichtigt werden, da z.B. der IE nur über den top.parent.document.body.offsetWidth die Breite des Framesets zurückmeldet, hier aber die Breite des Fensterrahmens nicht mit einrechnet ...
Sollte eine Größenangabe in einer Variablen gespeichert werden, bleibt dieser Wert nach einem resizeTo() natürlich solange gespeichert, bis der Seiteninhalt erneut geladen wurde - daher sollte die Abfrage der Browsermaße mittels einer Funktion erfolgen, um die aktuellen Maße zu erhalten.
Leider: Die JavaScript-Befehle (Version 1.2) .innerWidth / .innerHeight und .outerWidth / .outerHeight interpretiert der IE nicht.
Der IE erwartet zum Ausmessen der Browsermaße mit den Befehlen .body.offsetWidth und .body.offsetHeight ein vorhandes <body>-Element. Eine Abfrage ist also erst nach dem Laden der Seite möglich!
Bug or feature 1 ?: Beim IE kann das resizeTo() innerhalb eines Framesets kann auch auf ein Frame angewandt werden: Allerdings werden dann die Scrollbars teilweise nach dem Resize nicht mehr angezeigt und die »Seitengröße« des Frames in der Breite bzw. Höhe über den tatsächlichen Rand hinaus (quasi virtuell) festgelegt.
Bug or feature 2 ?: Die JavaScript-Engine des NN verhindert, dass das Fenster über den sichtbaren Bereich des Bildschirms hinaus verschoben bzw. in der Größe gestreckt wird, beim IE lässt sich das Fenster beliebig manipulieren.
Bug: Vorsicht ist geboten beim NN 4.x wegen des Resize-Bugs (u.U. Programmabsturz).
Eine Lösung zum Auslesen der aktuellen Fensterposition ist mir nicht bekannt.
Formular zum Testen der Funktionen resizeTo, moveTo und moveBy
Das nachfolgende Formular sollen einen Eindruck vermitteln, was mit den Funktionen möglich ist. Das Ergebnis ist allerdings nicht punktgenau - dies ist bitte zu beachten.