JSWindow.js

Allgemeine Funktionen

getTickCount Diese Funktion verwende ich in verschiednene Varianten in unterschiedlichen Projekten. Sie gibt die Zeit in Millisekunden von einem fiktiven Zeitpunkt aus an. Die Länge eines Zyklus', also der Zeit bis wieder bei Null angefangen wird zu zählen, ist dabei so lange, dass während der Anzeigedauer der Seite nur mit einer sehr geringen Wahrscheinlichkeit ein Überlauf auftritt. Somit ist diese Funktion geeignet, um Zeitstempel für scriptbasierte Animationen zu liefern.
clone Klont ein Objekt - dabei werden alle Properties kopiert und ggf. der Konstruktor aufgerufen.
  • obj Das zu klonende Objekt
  • runConstructors Wenn true, Konstruktor des neues Objektes ausführen (ECMAScript 5, funktioniert nur bei manchen Objekten)
  • return Das neue Objekt
JSWEffect_terminate Beendet einen Fenster-Effekt. Mehr zu Effekten im nächsten Abschnitt.
  • win Das Fenster, dessen laufender Effekt beendet werden soll
  • _break Wenn true, wird der Effekt abgebrochen. Das heißt, die Effektfunktion wird NICHT noch ein weiteres mal aufgerufen, um das Fenster in das Endstadium des Effektes zu versetzen, sondern, der Style, den das Fenster bei gerade laufendem Effekt trägt, bleibt erhalten. Dieses Verhalten kann z.B. erwünscht sein, wenn ein Fenster von 100% bis 50% Sichtbarkeit ausgeblendet wird, aber bei 75% wird der Effekt abgebrochen und ein Effekt, der wieder bis 100% einblendet aufgerufen. Sind die Effekte entsprechend Programmiert, kann der zweite Effekt das Einblenden bei 75% beginnen. Der Effekt JSWEffect_Blend unterstützt dieses Verhalten.
  • return Falls true zurrückgegeben wird, darf kein neuer Effekt gestartet werden.

Effekte

Selbstverständlich können für alle Effekte (z.B. beim Schließen, Minimieren, ...) auch eigene Animationen definiert werden. Zwei einfache Standard-Effekte sind bereits in der JSWindow.js definiert. Um die Effekte für ein Fenster einzutragen, müssen sie in dem Objekt JSWindow.effects eingetragen werden.

Konvention

Jeder Effekt ist eine Funktion, die zum Starten ein mal mit, je nach Effekt-Typ vordefinierten, Parametern aufgerufen wird. Bei diesem Erstaufruf muss sich der Effekt selbstständig um das Beenden eventuell gerade aktiver Effekte kümmern und sich dann in die Eigenschaft JSWindow.effect seines Fensters eintragen. Für die Animation kann sich die Effektfunktion per Interval selbst aufrufen und dabei am Besten nur den win-Parameter übergeben. So kann der Selbstaufruf vom Erstaufruf unterschieden werden. Alle beim Erstaufruf übergebenen Eigenschaften können in JSWindow.effect gespeichert werden.

JSWindow.effect

In JSWindow.effect können beliebige Werte, die für den Effekt gebraucht werden, gespeichert werden. JSWindow.effect ist ein Objekt, das beim Erstaufruf eines Effektes instanziiert wird und bei dessen Beendigung auf null gesetzt wird. Die folgenden Properties von JSWindow.effect haben besondere Aufgaben und müssen gesetzt werden:

fkt Die Effektfunktion
stop Der Zeitpunkt (getTickCount() + duration) zu dem der Effekt beendet sein soll
interval Der Timer, den der Effekt zum Selbstaufruf verwendet muss ein window.setInterval sein und in diesem Property gespeichert werden.
onTerminate Falls dem Effekt eine onTerminate-Funktion übergeben wurde, muss diese hier gespeichert werden. Beachten Sie das besondere Verhalten, das beim Aufruf von onTerminate eingehalten werden muss. Wenn kein onTerminate übergeben, muss hier null gespeichert werden.

Aufbau einer Effektfunktion

Das folgende Beispiel veranschaulicht den Aufbau, den eine Effektfunktion sinnvoller Weise haben sollte:

function JSWEffect_Example (win, duration, onTerminate, param1, param2) {
 if (duration) { // Erstaufruf
  // Eventuell laufenden Effekt beenden. Wenn JSWEffect_terminate true zurueck gibt, darf kein neuer Effekt gestartet werden.
  if (JSWEffect_terminate(win)) return;
  // JSWindow.effect instanziieren und Werte speichern
  win.effect = new Object();
  win.effect['fkt'] = JSWEffect_Example; // Pflichtproperty
  win.effect['onTerminate'] = onTerminate; // Pflichtproperty
  win.effect['start'] = getTickCount();
  win.effect['stop'] = win.effect['start'] + duration; // Pflichtproperty
  win.effect['interval'] = window.setInterval(win.effect['fkt'], 20, win); // Pflichtproperty
  win.effect['param1'] = param1;
  win.effect['param2'] = param2;
  
  // Hier eventuelle initial-Stylesheets fuer Effekt setzen
  
 }
 var t = getTickCount();
 if (isNaN(win.effect['stop']) || t >= win.effect['stop']) { // Effekt beenden (wenn Zeit abgelaufen oder JSWindow.effect['stop'] auf Number.NaN gesetzt (Abbruch))
  // Timer beenden
  if (win.effect['interval']) window.clearInterval(win.effect['interval']); // mit if-Bedingung, falls timer bereits beendet wurde
  win.effect['interval'] = null; // Muss auf null gesetzt werden, um Doppelbeendigung zu verhindern
  
  // Hier "Ziel-Style" setzen; alle aussergewoehnlichen Stylesheets, die durch den Effekt gesetzt wurden, sollten zurrueckgenommen werden
  
  // Effekt beenden
  var onTerm = win.effect['onTerminate'];
  win.effect = null;
  if (onTerm) return onTerm(win); // onTerminate darf erst aufgerufen werden, nachdem JSWindow.effect auf null gesetzt wurde
 } else {
 
  // Animation
  
 }
}

Typen von Effektfunktionen

Hinweis: Viele Effekttypen (z.B. blend-in und blend-out) sind von der Form her identisch. Es ist also möglich, hier die gleiche Effektfunktion zu verwenden und nur über den frei wählbaren param (Siehe Effektregistrierung) zwischen den Effekten zu unterscheiden. Oftmals genügt es, nur wenige Zeilen einzufügen, um einen Effekt zu bauen, der sowohl ein- als auch ausblenden kann.

Show Effekt für Einblenden (Öffnen) von Fenstern.
  • win Das Fenster, zu dem der Effekt gehört
  • duration Die Dauer (ms), die der Effekt dauern soll
  • onTerminate Eine Funktion, die nach Beenden des Effektes aufgerufen werden soll
  • param Beliebiger Parameter, der in der Effektregistrierung gesetzt werden kann
Hide Effekt für Ausblenden (Schließen) von Fenstern.
  • win Das Fenster, zu dem der Effekt gehört
  • duration Die Dauer (ms), die der Effekt dauern soll
  • onTerminate Eine Funktion, die nach Beenden des Effektes aufgerufen werden soll
  • param Beliebiger Parameter, der in der Effektregistrierung gesetzt werden kann
Maximize Effekt für Maximieren von Fenstern.
Tipp: um Startposition zu ermitteln, kann JSWindow.getWindowPos() verwendet werden
  • win Das Fenster, zu dem der Effekt gehört
  • duration Die Dauer (ms), die der Effekt dauern soll
  • onTerminate Eine Funktion, die nach Beenden des Effektes aufgerufen werden soll
  • top y-Koordinate der Zielposition
  • left x-Koordinate der Zielposition
  • width Zeilbreite
  • height Zielhöhe
  • param Beliebiger Parameter, der in der Effektregistrierung gesetzt werden kann
Normalize Effekt für Normalisieren von Fenstern.
Tipp: um Startposition zu ermitteln, kann JSWindow.getWindowPos() verwendet werden
  • win Das Fenster, zu dem der Effekt gehört
  • duration Die Dauer (ms), die der Effekt dauern soll
  • onTerminate Eine Funktion, die nach Beenden des Effektes aufgerufen werden soll
  • top y-Koordinate der Zielposition
  • left x-Koordinate der Zielposition
  • width Zeilbreite
  • height Zielhöhe
  • param Beliebiger Parameter, der in der Effektregistrierung gesetzt werden kann
Minimize Effekt für Minimieren von Fenstern.
Tipp: um Startposition zu ermitteln, kann JSWindow.getWindowPos() verwendet werden
  • win Das Fenster, zu dem der Effekt gehört
  • duration Die Dauer (ms), die der Effekt dauern soll
  • onTerminate Eine Funktion, die nach Beenden des Effektes aufgerufen werden soll
  • x x-Koordinate des Minimierungspunktes
  • y y-Koordinate des Minimierungspunktes
  • param Beliebiger Parameter, der in der Effektregistrierung gesetzt werden kann
Unminimize Effekt für Wiederherstellen von Fenstern.
Tipp: um Startposition zu ermitteln, kann JSWindow.getWindowPos() verwendet werden
  • win Das Fenster, zu dem der Effekt gehört
  • duration Die Dauer (ms), die der Effekt dauern soll
  • onTerminate Eine Funktion, die nach Beenden des Effektes aufgerufen werden soll
  • x x-Koordinate des Minimierungspunktes
  • y y-Koordinate des Minimierungspunktes
  • param Beliebiger Parameter, der in der Effektregistrierung gesetzt werden kann
Activate Effekt für Aktivieren von Fenstern.
  • win Das Fenster, zu dem der Effekt gehört
  • duration Die Dauer (ms), die der Effekt dauern soll
  • onTerminate Eine Funktion, die nach Beenden des Effektes aufgerufen werden soll
  • param Beliebiger Parameter, der in der Effektregistrierung gesetzt werden kann
Deactivate Effekt für Deaktivieren von Fenstern.
  • win Das Fenster, zu dem der Effekt gehört
  • duration Die Dauer (ms), die der Effekt dauern soll
  • onTerminate Eine Funktion, die nach Beenden des Effektes aufgerufen werden soll
  • param Beliebiger Parameter, der in der Effektregistrierung gesetzt werden kann

Effektregistrierung

Damit ein Fenster die gewünschten Effekte anwendet, müssen diese im Objekt JSWindow.effects registriert werden. Wenn keine Effekte gewünscht sind, darf JSWindow.effects null sein. Um einen Effekt zu registrieren, muss die Effektfunktion in der Eigenschaft JSWindow.effects[Effekttyp] eingetragen werden. Effekttyp ist dabei der Typ (String), wie er in der Tabelle im vorherigen Abschnitt benannt ist (Gross/Kleinschreibung beachten!). Zu jeder Effektfunktion kann ein beliebiger Parameter (param) notiert werden. Dieser kann in der Eigenschaft JSWindow.effects[Effekttyp + 'Param'] gespeichert werden. Außerdem ist vorgesehen, dass die Dauer für jeden Effekt separat festgelegt werden kann. Dafür soll die Eigenschaft JSWindow.effects[Effekttyp + 'Duration'] zuständig sein. Ist diese nicht gesetzt, soll als Fallback die Eigenschaft JSWindow.effects['duration'] verwendet werden. Im Moment wird jedoch immer JSWindow.effects['duration'] für alle Effekte verwendet.
Im Managed-Windows-State muss nicht für jedes Fenster ein eigenes Effects-Objekt angelegt werden, sondern es wird standardgemäß das Effects-Objekt des Managers verwendet.

EventListener

Über die Methode JSWindow.addEventListener können eventListener auf ein Fenster gesetzt werden. Wird der Listener ausgelöst, so wird der Listener-Funktion als einziger Parameter das Fenster, das den Event ausgelöst hat, übergeben. Folgende EventListener werden von JSWindow unterstützt:

show Wird aufgerufen, nachdem ein Fenster sichtbar (ins DOM eingehängt) wurde.
hide Wird aufgerufen, bevor ein Fenster unsichtbar (aus dem DOM entfernt) wird.
move Wird aufgerufen, wenn ein Fenster seine Position oder Größe ändert.
exclude Wird aufgerufen, wenn ein Fenster excluded (Als Popup geöffnet) wird.
maximize Wird aufgerufen, wenn ein Fenster maximiert wird.
normalize Wird aufgerufen, wenn ein Fenster normalisiert wird.
minimize Wird aufgerufen, wenn ein Fenster minimiert wird.
unminimize Wird aufgerufen, wenn ein Fenster wiederhergestellt wird.
free Wird aufgerufen, wenn ein Fenster freigegeben (gelöscht) wird. Beim Aufruf von Free sind bereits manche Funktionen des Fensters unbenutzbar. Das Fenster selber sollte in der onFree-Methode nicht mehr angesprochen werden.

Im Managed-Windows-State existieren weitere EventListener.

Die Klasse JSWindow

Die Prototypeklasse JSWindow stellt die Funktionalität je eines Fensters dar. Sie kümmert sich um das Verschieben, Maximieren, Minimieren, Schließen und natürlich Erstellen von Fenstern. Außerdem enthällt sie wichtige Funktionen zu Positionsberechnung, etc.

Konstruktor von JSWindow:

Die Klasse JSWindow erwartet beim Erstellen genau einen optionalen Parameter _el. _el kann ein existierendes OuterBox-Element sein, das z.B. beim Laden der Seite als HTML-Code gegeben war, aber noch von keinem anderen JSWindow verwendet wird. Wird _el übergeben, so versucht JSWindow, diese bis dahin statische Box in ein vollwertiges Fenster zu verwandeln. Ansonsten wird ein OuterBox-Element erzeugt, dass aber vom Konstruktor NICHT ins DOM eingehängt wird. Dies geschied in diesem Fall erst mit show.

Eigenschaften von JSWindow:
eventListeners In diesem Array werden Eventlistener gespeichert, die diese JSWindow-Instanz gesetzt hat. So können diese vor dem Schließen freigegeben werden. Das ist wichtig, da die zugehörigen Funktionen nach dem Freigeben der Instanz durch free nicht mehr funktionieren würden. EventListener, die per onEvent gesetzt werden, werden automatisch in dieses Array eingetragen.
  • Array-Elemente
    • f Die verknüpfte Funktion des EventListeners (Dies ist nicht die Funktion, die onEvent übergeben wird, sondern sie wird in onEvent erzeugt)
    • el Das HTML-Element, auf das der EventListener gesetzt ist
selfEventListeners Dies ist ein assoziatives Array, das alle auf dieses JSWindow gesetzten EventListener nach Typen sortiert speichert. Dabei ist JSWindow.selfEventListeners[type] ein Array, das alle EventListener des Types (type) speichert. Falls JSWindow.selfEventListeners[type].length == 0, so soll JSWindow.selfEventListeners[type] aus JSWindow.selfEventListeners gelöscht werden.
  • * type
    • Array-Elemente Die verknüpfte Funktion des EventListeners, die addEventListener übergeben wurde.
disabledCount Dies ist ein Zähler, der mit jedem Aufruf von disable hochzählt und mit jedem Aufruf von enable herunter. Ist disabledCount > 0, so ist das Fenster "ausgegraut", also nicht anklickbar. Das kann erwüscht sein, wenn das Fenster ein Zweitfenster als Dialog (wie alert, prompt, ...) anzeigt und in dieser Zeit nicht bedienbar sein soll.
parentElement Das HTML-Element, das das Fenster enthält. Falls die Fenster-Box (outerBox) beim Create schon bekannt, so wird deren parentElement verwendet, ansonsten muss es beim (ersten) Aufruf von show übergeben werden. Im Managed-Windows-State (oder höher) wird parentElement automatisch auf das parentElement, das dem Manager übergeben wurde, festgesetzt, falls beim ersten Aufruf von show kein parent übergeben wird.
appended Speichert, ob das Fenster in das parentElement eingehängt ist. Nach Beendigung von hide oder exclude etwa wird das Fenster standardgemäß aus dem DOM entfernt.
el Ein Assoziatives Array, das alle HTML-Elemente, die zum Fenster gehören speichert.
visible Speichert, ob das Fenster gerade sichtbar ist. Mit "unsichtbar" ist hier gemeint, dass das Fenster komplett aus dem DOM entfernt ist (wie etwa nach dem Aufruf von hide).
pos Assoziatives Array: Speichert die Positionsdaten des Fensters. Um eine "brauchbare" Positionsangabe des Fensters zu erhalten, kann getWindowPos verwendet werden.
  • position Entweder 'absolute' oder 'fixed'.
  • top Abstand nach oben (Number.NaN wenn nicht gesetzt).
  • topPercent Wenn true ist top prozentuale Angabe.
  • left Abstand nach links (Number.NaN wenn nicht gesetzt).
  • leftPercent Wenn true ist left prozentuale Angabe.
  • right Abstand nach rechts (Number.NaN wenn nicht gesetzt).
  • rightPercent Wenn true ist right prozentuale Angabe.
  • bottom Abstand nach unten (Number.NaN wenn nicht gesetzt).
  • bottomPercent Wenn true ist bottom prozentuale Angabe.
  • width Breite (Number.NaN wenn nicht gesetzt).
  • widthPercent Wenn true ist width prozentuale Angabe.
  • height Höhe (Number.NaN wenn nicht gesetzt).
  • heightPercent Wenn true ist height prozentuale Angabe.
effect Speichert, den gerade aktiven Effekt. Details unter Effekte.
maximized Speichert, ob das Fenster maximiert ist.
minimized Speichert, ob das Fenster minimiert ist.
excluded Speichert, ob das Fenster "excluded" ist.
resizable Speichert, ob das Fenster in der Größe verändert werden darf.
movable Speichert, ob das Fenster verschoben werden darf.
effects Speichert die auf das Fenster anwendbaren Effekte. Details unter Effekte.
mainFrame Wenn der Inhalt des Fensters aus einm einzigen, alles ausfüllenden Iframe besteht, so kann dieser in mainFrame eingetragen werden. Dieser Frame sollte einen FrameCommunicator besitzen. JSWSystem.createWindowFromSite etwa wird mainFrame automatisch setzen. Achtung: JSWindow wird den mainFrame NICHT automatisch ermitteln. JSWindow ist nicht auf frameCommunicator.js angewiesen!.
minWidth Speichert die Mindestbreite des Fensters.
minHeight Speichert die Mindesthöhe des Fensters.
freed Wenn true ist das Fenster ungültig (free wurde aufgerufen).
freeOnHide Wenn true wird das Fenster nach Beendigung von hide freigegeben.
Standrad: true
maximizable Speichert, ob das Fenster maximiert werden darf. Wenn auf false gesetzt wird, wird auch der Maximize-Button versteckt.
Standard: true
minimizable Speichert, ob das Fenster minimiert werden darf. Wenn auf false gesetzt wird, wird auch der Minimize-Button versteckt.
Standard: true
closeable Speichert, ob das Fenster geschlossen (hide) werden darf. Wenn auf false gesetzt wird, wird auch der Close-Button versteckt.
Standard: true
excludable Speichert, ob das Fenster "excluded" werden darf. Wenn auf false gesetzt wird, wird auch der Exclude-Button versteckt.
Standard: false
minimizePoint Speichert eine Callback-Funktion, die immer dann aufgerufen wird, wenn das Fenster minimiert wird. Sie soll ein Array zurück geben, das die Koordinaten des Punktes, zu dem das Fenster minimiert werden soll, enthällt.
  • return Objekt, dass die Koordinaten des Minimize-Points speichert
    • [0] X-Koordinate des Minimize-Points
    • [1] Y-Koordinate des Minimize-Points
minimalVisible Speichert einen Ramen aus Abständen zum parentElement, die das Fenster nicht unterschreiten soll. Dabei wird unterschieden, ob ein Wert positiv (≥ 0) oder negativ ist. Wenn positiv, so darf das Fenster den jeweilligen Abstand nicht unterschreiten, wenn negativ, so muss mindestens der Betrag des Wertes an Pixeln vom Fenster auf dieser Seite sichtbar sein.
Beispiel: minimalVisible[1] == 10el['OuterBox'].offsetLeft muss größer gleich 10 sein. minimalVisible[1] == -10el['OuterBox'].offsetLeft + el['OuterBox'].offsetWidth muss größer gleich 10 sein.
  • [0] Abstand oben
  • [1] Abstand links
  • [2] Abstand rechts
  • [3] Abstand unten
autoHeight Speichert, ob die Höhe des Fensters automatisch, aus der Höhe des Inhaltes generiert wird. Achtung: falls resizable auf true gesetzt ist, so kann der Benutzer die Höhe des Fensters trotzdem ändern. Bei der ersten Höhenänderung wird autoHeight automatisch auf false gesetzt. Wenn das Fenster per top und bottom positioniert ist (pos.height == Number.NaN), so wird durch autoHeight das bottom-Attribut ignoriert. Wenn das Fenster einen mainFrame enthällt, so wird mainFrame.communicator.autoHeight = autoHeight gesetzt.
autoWidth Speichert, ob die Breite des Fensters automatisch, aus der Breite des Inhaltes generiert wird. Achtung: falls resizable auf true gesetzt ist, so kann der Benutzer die Breite des Fensters trotzdem ändern. Bei der ersten Breitenänderung wird autoWidth automatisch auf false gesetzt. Wenn das Fenster per left und right positioniert ist (pos.width == Number.NaN), so wird durch autoWidth das right-Attribut ignoriert. Wenn das Fenster einen mainFrame enthällt, so wird mainFrame.communicator.autoWidth = autoWidth gesetzt.
title Speichert den Titel des Fensters (ggf. HTML-Content), wie er in der Fensterleiste sichtbar ist.
icon Speichert die URL des Icons, das vor dem Titel sichtbar sein soll ('' falls kein Icon existiert). Beim Setzen eines Icons wird die Funktion setIcon aufgerufen.
lastMouseDown [Nicht deklariert] Dient als Cache für das MouseDown-Event; wird z.B. in exclude verwendet.
Funktionen von JSWindow:
extendBar Fügt ein leeres DIV-Element unterhalb der Fensterleiste ein. Dafür wird die InnerBox weiter nach unten gesetzt. Der zusätzliche Bereich sollte wie die Bar selbst aussehen und für Menüs oder bestimmte Buttons verwendet werden können. Das neue DIV wird in el['BarExtension'] gespeichert. Wenn bereits eine Extension existiert, wird diese zurückgegeben und sonst nichts weiter getan.
  • return Das DIV, das die Taskbar erweitert
setIcon Setzt ein neues Icon. Diese Funktion ist der Setter von icon, wurde aber als Funktion ausgelagert, damit sie von JSWindowManaged überschrieben werden kann. Das zum Icon gehörende image-Element trägt den className JSW Icon, wird bei Bedarf automatisch erzeugt bzw. gelöscht und in JSWindow.el['Icon'] gespeichert.
  • icon URL (sollte absolut sein) des neuen Icons
setTitle Setzt einen neuen Titel für das Fenster. Diese Funktion dient nur dazu, durch JSWindowManaged überschrieben werden zu können. Um dem Fenster einen neuen Titel zuzuweisen, sollte title = 'neuer Titel' verwendet werden.
  • title Neuer Titel
addEventListener Setzt einen EventListener auf das Fenster. Mehr zum Thema EventListener unter EventListeners.
  • type Bezeichnung des Events
  • fkt Callback-Funktion des EventListeners
removeEventListener Entfernt einen EventListener, der vorher mit addEventListener gesetzt wurde.
  • type Bezeichnung des Events
  • fkt Callback-Funktion des EventListeners
callEventListener Ruft alle EventListener eines Typs auf. Dies schließt globale EventListener, die im Falle von gemanagden Fenstern auf JSWManager gesetzt sein können, ein. Ausnahmsweise wird daher an dieser Stelle von JSWindow auf die Eigenschaft mgr, die eigentlich zu JSWindowManaged gehört, zugegriffen. Dies spart die Überschreibung von callEventListener.
  • type Bezeichnung des Events
  • param Ein Parameter, der bei manchen Events den Listener-Funktionen übergeben wird
disable Macht ein Fenster nicht-anklickbar. Kann durch den Aufruf von enable rückgängig gemacht werden. Dabei muss, wenn disable zwei mal aufgerufen wurde, enable ebenfalls zwei mal aufgerufen werden (siehe disabledCount).
enable Macht ein Fenster wieder anklickbar, nach dem Aufruf von disable. Dabei muss, wenn disable zwei mal aufgerufen wurde, enable ebenfalls zwei mal aufgerufen werden (siehe disabledCount).
showFrameload Fügt ein Fenster in das DOM (parent) ein, genau wie show. Jedoch wird das Fenster durch showFrameload nicht eingeblended, sondern bleibt unsichtbar. So können Iframes im Inhalt des Fensters fertig geladen werden, bevor dieses eingeblended wird.
  • parent Das ParentElement, in das das Fenster eingehängt werden soll. Kann weggelassen werden, wenn das Fenster sein parentElement bereits kennt (durch frühere Aufrufe von show/showFrameload oder durch das, dem Konstruktor übergebene, Element).
show Fügt ein Fenster in das DOM (parent) ein, und beginnt den Einblendeeffekt.
  • parent Das ParentElement, in das das Fenster eingehängt werden soll. Kann weggelassen werden, wenn das Fenster sein parentElement bereits kennt (durch frühere Aufrufe von show/showFrameload oder durch das, dem Konstruktor übergebene, Element).
hide Blendet ein Fenster aus, danach wird die in hide enthaltene Funktion onEffectTerminate aufgerufen, die das Fenster aus dem DOM entfernt.
setPos Wendet die in pos gespeicherte Positionierung auf das Fenster an. Dabei wird nicht zwangsläufig der vollständige, in pos gespeicherte Style angewendet, z.B. wenn das Fenster gerade maximiert ist, oder wenn autoHeight/autoWidth true ist.
getWindowPos Gibt ein Array zurück, das die aktuelle Position des Fensters vom inner-window-Bereich aus gesehen (Also die Abstände bis zur oberen, linken Ecke des sichtbaren Anzeigebereichs) enthällt. Ich habe hier den Typ der Arrayeinträge als integer angegeben. Je nach Browser und Zoomfaktor können aber auch float-Werte zurück gegeben werden.
  • return Die erwähnten Abstände
    • [0] Abstand von Links
    • [1] Abstand von Oben
hasAtr Gibt true zurück, falls ein Element ein bestimmtes class-Attribut besitzt.
  • el Das HTML-Element
  • atr Das Class-Attribut
  • return true, falls atr im className von el enthalten ist
setAtr Gibt einem Element ein class-Attribut, falls es dieses noch nicht besitzt.
  • el Das HTML-Element
  • atr Das Class-Attribut
rmAtr Entfernt (falls vorhanden) ein class-Attribut von einem Element
  • el Das HTML-Element
  • atr Das Class-Attribut
setOrRmAtr Ruft setAtr auf, falls set true ist, ansonsten rmAtr.
  • el Das HTML-Element
  • atr Das Class-Attribut
  • set Setzen oder Entfernen
onEvent Vereinfacht das Setzen eines EventListeners. Zum Beispiel wird die Callback-Funktion automatisch in der JSWindow-Instanz aufgerufen und die Eigenschaften offsetX und target des Events werden für alle Browser vereinheitlicht. Außerdem werden alle aktiven, über onEvent gesetzten EventListener, in eventListeners gespeichert, sodass sie beim Aufruf von free automatisch gelöscht werden können.
  • el Das HTML-Element
  • event Name des Events (ohne "on")
  • fkt Aufzurufende Callback-Funktion
  • return Ein Event-Info-Objekt (Assoziatives Array), das zum Freigeben des Events durch rmEvent gebraucht wird
    • f Die tatsächlich auf das Element gesetzte Callback-Funktion (dies ist nicht fkt aus onEvent)
    • event Gleich event aus onEvent
    • el Gleich el aus onEvent
rmEvent Gibt einen mit onEvent erstellten EventListener frei.
  • oev Event-Info-Objekt (Details unter onEvent)
actualizePos Da die Angaben in pos immer in Pixeln gemessen werden, müssen diese manchmal aktualisiert werden, falls prozentuale Angaben oder autoHeight/autoWidth verwendet werden. actualizePos rechnet daher die aktuellen Positionen des Fensters in Pixel um und speichert diese in pos.
offsetTopFrom Gibt den Abstand eines Elements (el) nach oben bis zu einem bestimmten OffsetParent-Element (offsetEl) zurück. Wird kein offsetEl übergeben, so wird der Abstand bis zum Dokumentanfang zurückgegeben.
  • el Das Element, dessen Abstand bestimmt werden soll.
  • offsetEl Das offsetParent-Element
  • return Der Abstand
offsetLeftFrom Gibt den Abstand eines Elements (el) nach links bis zu einem bestimmten OffsetParent-Element (offsetEl) zurück. Wird kein offsetEl übergeben, so wird der Abstand bis zum Dokumentanfang zurückgegeben.
  • el Das Element, dessen Abstand bestimmt werden soll.
  • offsetEl Das offsetParent-Element
  • return Der Abstand
parentOffsetWidth Gibt die Breite des Parent-Elements zurück, in dem das Fenster angezeigt wird.
  • return Die Breite
parentOffsetHeight Gibt die Höhe des Parent-Elements zurück, in dem das Fenster angezeigt wird.
  • return Die Höhe
offsetTop Gibt den offsetTop-Wert der OuterBox zurück, den diese hat/hätte, wenn sie normalisiert ist/wäre.
  • return offsetTop-Wert
offsetLeft Gibt den offsetLeft-Wert der OuterBox zurück, den diese hat/hätte, wenn sie normalisiert ist/wäre.
  • return offsetLeft-Wert
offsetWidth Gibt den offsetWidth-Wert der OuterBox zurück, den diese hat/hätte, wenn sie normalisiert ist/wäre.
  • return offsetWidth-Wert
offsetHeight Gibt den offsetHeight-Wert der OuterBox zurück, den diese hat/hätte, wenn sie normalisiert ist/wäre.
  • return offsetHeight-Wert
setOffsetPosition Setzt die Position des Fensters so, dass offsetTop, offsetLeft, offsetWidth, offsetHeight die übergebenen Werte zurückgeben würden. Dabei wird die Art der Positionierung jedoch nicht verändert: Wenn das Fenster vorher mit left und right positioniert war, so werden diese Werte entsprechend berechnet, sodass offsetWidth für den Moment die übergebene Breite annimmt, aber bei einem Dokument-Resize wäre das Fenster weiterhin rechts verankert.
  • top
  • left
  • width
  • height
mouseDown Wird immer aufgerfufen, wenn ein MouseDown-Event auf das Fenster stattfindet. In mouseMove wird z.B. festgestellt, ob der Klick auf ein Element, das zum Verschieben/zum Ändern der Größe vorgesehen ist, erfolgt und wenn ja, dann wird der resize/move-Vorgang vorbereitet. Etwa werden dann EventListener für MouseMove/MouseUp gesetzt und es wird verhindert, das während der Mausbewegung Text markiert werden kann.
  • ev Das Event-Objekt
documentResize Wird beim Resize des Browserfensters und in mouseUp aufgerufen. Setzt das Fenster in den sichtbaren Anzeigebereich zurück, falls es z.B. beim Verschieben bis außerhalb des Bereichs geschoben wurde. Mehr zum Thema sichtbarer Anzeigebereich unter minimalVisible.
mouseUp Beendet den move/resize-Vorgang. mouseUp löscht seinen eigenen EventListener, sowie den mouseMove-Listener. Er wird erst wider in mouseDown gesetzt.
  • ev Das Event-Objekt
mouseMove Verschiebt/ändert Größe des Fensters. Die in mouseMove enthaltene Funktion applyChange rechnet dafür ggf. von Pixel auf Prozentwerte um. Bei einer Größenänderung können auch autoHeight/autoWidth auf false gesetzt werden.
  • ev Das Event-Objekt
exclude Öffnet ein Fenster als Popup. Dafür muss excludable auf true gesetzt worden sein. Beachten Sie: Im Internet Explorer funktioniert das Umhängen von Elementen zwischen verschiedenen Fenstern nicht. Der HTML-Content des Fensters muss dafür komplett neu generiert werden. Falls das Fenster mit weiteren JavaScripts interagiert, werden diese unter Umständen Fehler erzeugen.
  • click Diese Variable wird nur von JSWindow selbst auf true gesetzt, falls das Exclude als Folge eines Klicks auf den Exclude-Button aufgerufen wird. Dann wird in lastMouseDown das Klick-Event gespeichert und exclude kann die Klick-Koordinaten zur verbesserten Positionierung des Fensters verwenden (Umrechnung von Dokument auf Bildschirmkoordinaten).
maximize Maximiert ein Fenster.
normalize Normalisiert ein Fenster (Umkehr von maximize).
minimize Minimiert ein Fenster.
unminimize Stellt ein Fenster wieder her (Umkehr von minimize).
free Destruktor: Gibt ein Fenster frei. Mehr zum Thema im Abschnitt ECMA-Script: Objekte Freigeben.