Beim Erstellen von Webanwendungen oder dynamischen Webinhalten gibt es eine Handvoll Funktionen, für die wirklich Bedarf nach einer browserübergreifenden JavaScript-Bibliothek besteht. Die hier dokumentierte Bibliothek minlib.js benötigt in lesbarer, unkomprimierter Form nur rund 10 KB. Die Funktionen und ihre Implementierung habe ich in meinem Blog zum Thema beschrieben.
[Array].each( function(item,index) { ... } )
Ruft die angebene Funktion für jedes Element des Arrays auf. Die Elemente stehen dabei in der Pseudovariablen this zur Verfügung, werden aber auch als erstes Argument beim Aufruf übergeben. Das zweite Argument ist der aktuelle Arrayindex (der in der Regel nicht benötigt wird). Die Funktion koexistiert mit der Iteratorfunktion each() des Prototype-Frameworks.
[Array].subset( function() { ... } )
Gibt einen neuen Array zurück, bestehend aus allen Elementen, für die die angegebene Funktion zu true evaluiert. Die Arrayelemente werden der Funktion in der Pseudovariablen this zur Verfügung gestellt.
extend(childObject,parentObject)
Erklärt childObject auf die von der MDC empfohlene Weise zum Kind von parentObject.
setAttributes(object,attributes)
Gibt dem Objekt object alle in attributes aufgeführten Eigenschaften. Durch Extraktion dieser Loop kann sich der Code auf die deklarativen Eigenschaften beschränken, um die es geht (indem im Aufruf an zweiter Stelle nur die Hashproperties aufgelistet werden).
HTTP-Zugriffe und Navigation
doRequest(url,callback,data,action,headerFields)
Einen HTTP-Request ausführen. Der Request wird genau dann asynchron ausgeführt, wenn eine Callback-Funktion angegeben ist. Wegen der "Same Origin Policy" (SOP) können nur Requests an die eigene Domäne gerichtet werden.
getRequestor()
Erzeugt ein neues HTTP-Request-Objekt zur eigenen Verwendung. Dieser Code ist in einer eigenen Funktion ausgelagert, damit er für Unit Tests geeignet überschrieben werden kann.
gotoURL(url, fields)
Navigiert zu einer URL mit Hilfe eines POST-Requests. Die im Argument fields angegebenen Werte werden dabei als Parameter übergeben. Der Trick ist die "on the fly"-Konstruktion eines mittels POST zu versendenden Formulars, das die angegebenen Felder als versteckte Formularfelder enthält.
DOM-Zugriffsfunktionen
byId(id)
Shortcut für document.getElementById(id).
byName(name,theParent)
Ähnlich wie document.getElementByName(name). Liefert aber einen Array, keine NodeList zurück (so dass alle Methoden des Array-Objekts angewendet werden können). Es kann auch ein Vaterknoten angegeben werden, von dem ab die Suche ausgeführt werden soll.
firstByName(name,theParent)
Liefert das erste Element des Namens name.
byClass(className,theParent)
Liefert einen Array aller Elemente mit dem angegebenen CSS-Klassennamen.
byTagName(tagname,theParent)
Liefert einen Array aller Elemente mit dem angegebenen Elementnamen. Die Suche nach dem Elementname erfolgt case-insensitiv.
byCondition( condition, theParent)
Liefert einen Array aller Elemente, für welche die angegebene Bedingungsfunktion zu true evaluiert.
getTagNamedParent(elem,parentTagName)
Liefert das erste Vaterelement des angegebenen Elementnamens.
getParentByCondition(elem,condition)
Liefert das erste Vaterelement, für das die angegebene Bedingungsfunktion zu true evaluiert.
getElement( idOrNode )
Wenn ein HTML-Element übergeben wird, wird dieses zurückgeliefert. Wenn ein String übergeben wird, wird das Element mit dieser ID zurückgeliefert. Gibt es kein solches, so wird schliesslich ein Element des angegebenen Namens gesucht. Nützlich, um Funktionen mit allgemeiner Schnittstelle anzubieten - also mit Parametern, die wahlweise ein Element oder eine Element-ID entgegennehmen.
getNodeFromIdOrName(idOrName)
Der Bug, dass die Funktion getElementById im Internet Explorer Namen und ID nicht unterscheidet, könnte auch als Feature angesehen werden. Nur müsste dieses dann unter einer eigenen Funktion laufen: Genau das leistet getNodeFromIdOrName(). Es wird zuerst nach einem Element mit der angegebenen ID gesucht. Bei Misserfolg wird ein Element über den Namen gesucht.
setText(idOrNode,text)
Setzt einen Text in ein input-Feld oder auch in ein beliebiges anderes Element (etwa einen div oder span).
getText(idOrNode)
Liest einen Text aus einem input-Feld oder einem beliebigen anderen Element.
setClass(element,theClass)
Fügt die CSS-Klasse theClass in den String element.className ein.
resetClass(element,theClass)
Entfernt die CSS-Klasse theClass aus dem String element.className.
hasClass(element,theClass)
Prüft, ob das Element element die CSS-Klasse theClass hat.
DOM-Eventhandling
registerFor( theElement, theEvent, theHandler )
Registriert die Funktion theHandler für das Ereignis theEvent des Elements theElement. Das Element theElement steht in der Behandlerfunktion als this zur Verfügung. Erstes Argument der Funktion sollte event heissen, es enthält in den Standardbrowsern das Ereignisobjekt. Rückgabewert von registerFor() ist der effektiv registrierte Wrapper f.
unregister( theElement, theEvent, f )
Entfernt die Registrierung des Behandlers f (des Rückgabewerts aus registerFor()).
stopEventPropagation( theEvent )
Verhindert innerhalb eines Behandlers, dass das Event auch für die Kette der Vaterknoten des aktuellen Elements ausgelöst wird.
preventDefaultHandler( theEvent )
Unterbindet die Ausführung des Defaultbehandlers für dieses Element (z.B. die Navigation bei Click auf einen Link).
getSource( event )
Funktion, um bei Auslösung eines Ereignisses dessen Quell-Element zu ermitteln. (Falls aus irgendeinem Grunde der this-Mechanismus von registerFor() nicht verwendet werden kann.)
getKeyCode(event)
Liefert für Tastaturevents wie keydown den Tastencode.