Das Verzeichnis »this.window« (das BOM ) in JavaScript mit Firefox 38
Einige Möglichkeiten stehen erst zur Verfügung, wenn im Browser auch tatsächlich eine Web -Seite angezeigt wird. Dafür kann ein HTML-Dokument in den Browser geladen werden. Wie dies geht, wurde schon im Kurs behandelt.
Das Verzeichnis »this.window« enthält Informationen über das Browserfenster , zu dem eine Auswertung eines JavaScript -Ausdrucks gehört. (Jeder Auswertung im Browser wird ein Browserfenster zugeordnet.)
Das “BOM ” ist das “browser object model ”, was auf deutsch soviel bedeutet wie „Darstellung einiger Browser-Informationen mit Verzeichnissen“. Es kann in JavaScript normalerweise durch den Ausdruck »this.window« notiert werden.
Objektmodelle
Die Darstellung von Informationen unter Verwendung von Verzeichnissen und ihren Einträgen wird auch als ein Objektmodell bezeichnet.
Beispielsweise stellen wir uns vor, daß die Kreiszahl ‹ π › zur Mathematik gehört.
Diese Auffassung können wir nun mit Verzeichnissen nachbilden („modellieren“), indem wir dafür sorgen, daß die Konstante »PI« sich in einem Verzeichnis ›Math‹ befindet. – Dabei repräsentiert dieses Verzeichnis die Mathematik und der Bezeichner »PI« steht für die Kreiszahl ‹ π ›. Die Tatsache, daß der Bezeichner »PI« sich (als Schlüssel) im Verzeichnis ›Math‹ befindet, drückt dann aus, daß die Kreiszahl ‹ π › für uns zur Mathematik gehört.
»this.window.location.href«
Die Adresse des im Fenster dargestellten Inhalts findet man im BOM unter »this.window.location.href«.
- Auswertung
this.window.location.href
"about:blank"
Die Ausgabe kann auch anders lauten als hier gezeigt, wenn ein Dokument aus einer bestimmten Quelle geladen wurde. Falls Fehlermeldungen auftreten oder nur »undefined« angezeigt wird, könnte es sogar nötig sein, vor der Auswertung dieses Ausdrucks erst einmal ein Dokument aus einer Datei oder dem Web zu laden.
»this.window.navigator.userAgent«
Die Kennung des Browsers, mit welcher er sich bei einem Web-Server identifiziert, wird mit »this.window.location.href« ausgedrückt.
- Auswertung
this.window.navigator.userAgent
"Mozilla/5.0 (Windows NT 6.1; rv:38.0) Gecko/20100101 Firefox/38.0"
(Es wird empfohlen, den Bezeichnernamen »userAgent« in neu geschriebenen Programmen nicht mehr zu verwenden, da er abgekündigt wurde. Dennoch ist er als ein Lehrbeispiel hier geeignet, weil sein Bedeutung einfach verständlich ist.)
»this.window.screen«
Das Verzeichnis »this.window.screen« enthält verschiedene Informationen über den Bildschirm, auf dem das Browser-Fenster angezeigt wird.
Das folgende Beispiel zeigt die Ausgabe der Breite und Höhe des Bildschirms in Pixeln.
- Auswertung
window.screen.width
1366
window.screen.height
768
(Der Wert dieser beiden Einträge kann durch die Zoom-Einstellung des Betriebssystems oder des Browsers so beeinflußt, daß sich andere Werte als die Bildschirmgröße in Pixel des Betriebssystems ergeben, weil der Browser dann entsprechend skalierte Pixel als Einheit verwendet.)
Die Globalität des window-Verzeichnisses
Alle Einträge des window-Verzeichnisses sind in der Regel auch ohne die Qualifikation mit »window« erreichbar.
- Auswertung
window.screen.width
1366
screen.width
1366
Es kann sein, daß jemand für bestimmten Programmteile versehentlich Namen wie »screen« oder »window« umdefiniert. Da es aber unwahrscheinlicher ist, daß jemand den bekannten Namen »window« versehentlich umdefiniert, ist es sicherer, »window.screen« statt »screen« zu schreiben, weil dies von bestimmten Arten der Umdefinition des Namens »screen« nicht beeinflußt wird.
Innerhalb der Konsole ist das window-Verzeichnis auch unter dem Namen »this« erreichbar.
- Auswertung
window.screen.width
1366
this.screen.width
1366
Normalerweise (direkt nach dem Start des Browsers in der Konsole) gilt »this« = »window«. Das globale Verzeichnis »this« und das window-Verzeichnis »window« kann in JavaScript also normalerweise als »this« oder auch als »window« bezeichnet werden oder oft ganz weggelassen werden.
In Mozilla Firefox 38 erscheint beim Eintippen in der Konsole eine Auflistung der Einträge als Eingabehilfe, wenn man »windows.« eingetippt hat, nicht jedoch, wenn man »this.« eingetippt hat. In Mozilla Firefox 48 erscheint die Eingabehilfe aber auch nach dem Tippen von »this.«.
Da »window« nur ein globaler Name ist, der im globalen Verzeichnis »this« eingetragen ist, ist es effizienter, gleich »this« zu verwenden, statt »window«. („Effizienter“ bedeutet, daß Programme so vermutlich schneller laufen.) Weil »this« ein eingebauter Teil der Programmiersprache ist, steht seine Bedeutung nämlich bereits fest, während der Wert von »window« immer wieder ermittelt werden muß. Obwohl es also effizienter ist »this.screen.width« zu schreiben, ist es hilfreich trotzdem zu wissen, daß »screen« als Eintrag in »window« angesehen wird. (Es ist nicht sicher, ob die Mutmaßungen dieses Absatzes zutreffen, im Zweifelfall muß man es mit der Stoppuhr nachmessen.)
Später werden wir Situationen kennenlernen, in denen »window« oder »this« auch eine andere Bedeutung haben kann. Es ist in JavaScript leider etwas schwierig, einen Ausdruck anzugeben, dessen Wert immer (egal an welcher Stelle man ihn verwendet) das globale Verzeichnis »this« oder das Fensterverzeichnis »window« ist.
Übersicht
In der folgenden Übersicht steht »this« für das globale Verzeichnis und »window« für das globale Verzeichnis in einem Web-Browser.
- Übersicht der Namen
Name Art Bedeutung
this.Infinity Zahl Unendlich
this.Math.PI Zahl die Kreiszahl Piwindow.location.href Text aktuelle Adresse
window.navigator.userAgent Text Browser-Bezeichnung
window.screen.height Zahl Bildschirmhoehe
window.screen.width Zahl Bildschirmbreite