Mrz 30 2008

flot 0.4 released

Tag: Google,Javascript,jQueryPatrick @ 10:18 pm

Die zum Zeichnen von Graphen entwickelte flot-Javascriptbibliothek ist seit einiger Zeit in der Version 0.4 erhältlich.

Zu den Änderungen gegenüber der bisheriger 0.3er Version gehören unter anderem folgende Punkte:

  • Unterstützung von Zeitangaben an den Graphenachsen über mode=“time“
  • Unterstützung farbiger Hintergrundflächen mittels grid.coloredAreas( x1, y1, x2, y2 ) – die Parameter geben die beiden Eckpunkte der Fläche oben-links und unten-rechts an
  • Unterstützung von Strichlinien
  • die Rahmenbreite ist nun veränderbar
  • Überarbeitung des automatischen Achsen-Skalierungsalgorithmuses

Wie man flot ein bindet und was man damit anfangen kann, haben wir in unserer Vorstellung dieser Bibliothek aufgezeigt. Zudem haben wir auf Grundlage von flot einige Beispielanwendungen erstellt.


Feb 14 2008

Drupal 6.0 setzt weiterhin auf jQuery

Tag: jQueryTobi @ 12:23 am

Drupal LogoNach einem Jahr Entwicklungszeit ist die neue Version des Conent-Managment-Systems Drupal nun fertig. Dank eines Installers lässt sich das neue Drupal in wenigen Minuten einrichten. Bereits während der Installation kann das benötigte Sprachpaket einbunden werden, das System steht somit von Anfang an in der Landessprache des Anwenders zur Verfügung.

Wie auch in Drupal 5 nutzt die neue Version die mächtige Javascript-Bibliothek jQuery in der aktuellen Version 1.2.3, wie wir bereits berichteten.

Es können beispielsweise Menüpunkte per Drag & Drop verschoben werden. Die Drag & Drop Funktionalität steht für zahlreiche weitere Elemente zur Verfügung, wie z.B. hochgeladene Dateien. Durch hin- und herverschieben von Inhalt-Blöcken kann der Inhalt auf Seiten geändert werden. Diese nützlichen Interaktions-Features machen dem Anwender die Arbeit wesentlich attraktiver.

Wie man es von WordPress kennt, besitzt das neue Drupal eine Übersicht, die den Anwender über neue Versionen und Sicherheits-Updates des Drupal-Core, eingebundener Module und Templates informiert.

Templates, insbesondere reine CSS-Layouts, lassen sich noch einfacher erstellen. Das CMS soll jetzt so sicher wie noch nie sein. Ebenso wurde die Performance optimiert, pro Seite wird weniger Code geladen, somit können mir dem selben Speicherlimit mehr Module geladen werden.

Viele weitere Neuerungen in Drupal 6 sind der offiziellen Seite zu entnehmen ist.


Feb 13 2008

Geschwindigkeitsvergleich der Javascript-Bibliotheken

Tag: jQueryPatrick @ 12:40 pm

Die Betreiber der Seite PBwiki veröffentlichten vor kurzem einem Vergleich der verschiedenen Javascript-Bibliotheken in Sachen Ladegeschwindigkeit bei unterschiedlichen Versionen und Browsern mit interessanten Ergebnissen.

Auf dem Testparcour traten die folgenden JS-Tool gegeneinander an:

  • Dojo (1.0.1)
  • jQuery (1.2.1)
  • Prototyoe (1.6.0)
  • Yahoo UI (2.4.0)
  • Protoculous (1.0.2)

Dabei wurde auch verglichen, welchen Vorteil gepackte gegenüber ungepackten Versionen beim Laden haben und wie groß der Vorteil von sich im Cache befindlicher Dateien ist.

Ladezeiten der Toolkits (Zeit in ms)

JS-Bibliothek durchschnittliche Ladezeit (uncached) durchschnittliche Ladezeit (cached)
Protocolous-1.0.2 1140.7252 281.7047
Yahoo UI-2.4.0 928.6588 123.1865
Prototype-1.6.0 922.4588 142.0772
Dojo-1.0.1 915.2696 172.3481
jQuery-1.2.1 730.0446 132.4557

Während die Bibliotkek von Yahoo ungecached noch den vorletzten Platz belegt, gelang ihr, sobald sie im Cache vorliegt, der Sprung an die Spitze der Schnelligkeit. Ingesamt kann man sagen, dass der Cache die Zeit bis zur Ausführung des Scriptes auf etwa 1/5 der ursprünglichen Zeit reduziert wird.

Unkomprimiert vs komprimiert (JQuery, Zeit in ms)

Komprimiermethode durchschnittliche Ladezeit
normal 645.4818
gepackt 591.6636
minified 519.7214

Beim Vergleich der Komprimiermethoden bleibt festzuhalten, dass das minify-Verfahren gegenüber dem gewöhnlichen Packen überlegen ist. Das ist um so überraschender da die Dateigröße bei gepackter Form erheblich kleiner ist.

Vergleich der Browser (jQuery, cached, Zeit in ms)

Browser durchschnittliche Ladezeit
Firefox 2.x 108.8677
Internet Explorer 6.0 40.983
Internet Explorer 7.0 26.8222
Konqueror / Safari 19.7103
Firefox 3.x 14.0000

Wie man sehen kann, können die Browser aus dem Hause Microsoft an der bisherigen Version des Firefox 2 sehr leicht vorbeiziehen. Die große Differenz ist eventell damit verbunden, dass die IEs enger ans Betriebssystem geknüpft sind. Zudem muss man auch in Erwägung ziehen, dass der Explorer vermehrt auf neueren und damit schnelleren Computersystem zum Einsatz kommt. Mozilla hat aber mit der 3er Version ein heißen Eisen im Feuer.

Der komplette Testbericht kann übrigens hier angesehen werden.


Feb 09 2008

jQuery veröffentlicht neue Version 1.2.3

Tag: Google,jQueryTobi @ 2:09 am

Der Grund für die neue Version liegt vorrangig – wie man dem Entwickler-Blog entnehmen kann – im Beheben von Fehler in jQuery 1.2.2. Die aktuelle Version ist jetzt absolut kompatibel zu Adobe AIR. Des Weiteren wird diese Version in dem CMS „Drupal 6“ eingesetzt und bildet die Grundlage für jQuery UI 1.5. Darüber hinaus wurden in dieser Version einige nebensächliche Funktionen für Plugin-Entwickler hinzugefügt.

.data() and .removeData()

Diese Methoden ergänzen die bereits existierenden Methoden jQuery.data und jQuery.removeData, die in jQuery 1.2 eingeführt wurden. Diese Methoden wurden für Plugin-Entwickler angepasst.

.unbind(”.namespace”)

In der Version 1.2 konnte man definierte Ereignisse hinzufügen und entfernen. Jedoch musste man immer ein Name des verwendeten Event-Typs inkludiert werden. Jetzt können alle gebundenen Ereignisse, die zu einem bestimmten Namensraum gehören, entfernt werden.

.trigger(”click!”)

Es wurde eine neue Ergänzgung hinzugefügt, die es erlaubt mit einem Namen versehene Ereignisse vom Ausgelöstwerden auszuschließen.

Alpha Versionen von jQuery UI 1.5 und jQuery Enchant 1.0

Außerdem präsentierten die jQuery-Entwickler die Alpha-Version von jQuery UI 1.5 vor. Diese Alpha stellt eine Generalüberholung des bestehenden Codes dar, behebt dabei unzählige Fehler und beschleunigt die API. Es wird noch einige Zeit und endloses Testen dauern bis diese Version genauso stabil läuft wie die 1.2er.

Zusätzlich gaben die jQuery-Väter bekannt, an einem Plugin namens jQuery Enchant zu arbeiten und veröffentlichten auch gleich eine Alpha-Version davon. jQuery Enchant soll die jQuery-Bibliothek um eine Menge zusätzlicher Effekte bereichern, wie zum Beispiel „Abschneiden“, „Wackeln“ und „Explodieren“. Auch Enchant wird noch eine Entwicklungs- und Testzeit verschlingen.

jQuery 1.2.3 herunterladen


Feb 05 2008

Mathematische Funktionen mit flot darstellen – Teil 2

Tag: Google,Javascript,jQueryPatrick @ 1:05 am

Die letzten beiden Wochen verbrachte ich unter anderen damit, mein Skript zur Darstellung mathematischer Funktionen mittels flot weiterzuentwickeln. Dabei entdeckte ich die fehlerhafte Darstellung gebrochener Zahlen in heutigen PC-Systemen und etliche andere Kleinigkeiten, auf die ich gleich eingehen werde. Insgesamt bin ich einen großen Schritt vorwärts gekommen.

Erfolgreich implementierte ich die Möglichkeit eine Kurvenschar (Funktionsschar) anzeigen zu lassen. Als zweiten Parameter entschied ich mich für die Variable z, da mir das für gewöhnlich genutze a größere Probleme beim Ersetzen des Parameters durch konkrete Werte bereitet hätte. So kommt beispielsweise ein a in Math.exp() beim Verwenden einer Exponentialfunktion vor.

Wie angekündigt habe ich die Möglichkeit eingebaut, sich über Scrollbuttons in der Grafik zu bewegen. Das erleichtet das Verfolgen eines Funktionsverlaufs erheblich. Mir ist es bisher nicht gelungen, das Zoomen mit dem Mausrad mittels des mousewheel-Plugins für jQuery 1.2.2 zu integrieren.

Alle Änderungen im Überblick:

  • Einbau der numlib-Bibliothek zum Eingrenzen des Binärdarstellungsproblems von gebrochenen Zahlen
  • Möglichkeit zur Darstellung von Kurvenscharen
  • Integration einer Scrollfunktion in die Funktionsgrafik
  • Möglichkeit die Schrittweite automatisch berechnen zu lassen
  • Zulassen von gebrochenen Zahlen im Exponenten der Exponentialfunktion ( = Wurzelfunktion )
  • Fehler bei negativen Zahlen behoben ( — gleich +)
  • Potenzgesetze in einfacher Form eingebaut ( x[2][3] gleich x[6] )

Ich werde weiter am Ball bleiben und das Skript stetig ergänzen. Man sieht bereits, dass es vorgesehen ist, eine zweite selbstdefinierte Funktion parallel in der Grafik anzuzeigen.

Folgende Neuerungen plane ich bis zur nächsten Veröffentlichung zu realisieren:

  • e-Funktion soll verwendet werden können
  • ebenso trigonometrische Funktionen
  • Optimierung der Scrollfunktion (nicht bei jeder Bewegung alle Werte neu berechnen)
  • Mausrad-Zoom-Funktion
  • Möglichkeit zwei unabhängige Funktionen darzustellen
  • Verallgemeinerung der regulären Ausdrücke
  • ausgeprägtere Gliederung in Funktionen oder Objekte
  • Erweiterung der Potenzgesetze

Und nun viel Spaß beim Ausprobieren der aktuellen Version meiner flot-Anwendung.


Feb 01 2008

jQuery-Newsticker

Tag: jQueryPatrick @ 1:38 am

Ich habe mich an den letzten beiden Tagen mit jQuery beschäftigt, mit dem Ziel einen einfachen Live-Ticker zu erstellen. Der Ticker sollte sich mittels Buttons steuern lassen und die auszugebenden Nachrichten in div-Containern ablegen.

Steuerbuttons

Die Buttons zur Steuerung entstammen der Sweetie-Icon-Gallerie. Jeder Grafik wird nach dem vollständigen Laden der Seite über jQuery ein click-Event zugewiesen.

Die Klickereignisse bewirken im Einzelnen:

  • eine Nachricht zurück,
  • automatischen Wechsel pausieren/fortsetzen,
  • nächste Nachricht anzeigen,
  • zur ersten Nachricht und
  • zur letzten Nachricht gehen.

Etliche Probleme bereiteten mir die Funktionen zum Durchschalten der Nachrichten-divs. Meine ersten Versuche einen Zähler zu integrieren, brachten nicht den erwünschten Erfolg. Ich beschloss dann anders an die Sache heranzugehen. Anstatt über eine Laufvariable festzulegen auf welches Container-div ich zugreifen will, ändere ich einfach die Reihenfolge der divs innerhalb des Containers.

Beim Vorwärtsgehen wird das erste Element ans Ende des div-Containers gehangen und das neue erste div (das ehemalige zweite) angezeigt. Beim Zurückschalten wird das letzte Element angezeigt und an die erste Stelle verschoben. Um die div-Elemente zu verschieben nutze ich die jQuery-Befehle clone() und remove().

function nextNews () {
	$("#ticker_container").append( $("#ticker_container div:first").clone(true) );
	$("#ticker_container div:first").remove();
	$("#ticker").html($("#ticker_container div:first").html());
}

function preNews () {
	$("#ticker").html($("#ticker_container div:last").html());
	$("#ticker_container").prepend( $("#ticker_container div:last").clone(true) );
	$("#ticker_container div:last").remove();
}

function stopNews () {
	window.clearInterval( int_ticker );
	$("#navi #navi_pause").attr("src", "24-arrow-next.png");
	int_ticker = null;
}

Zum Aufruf des automatischen Vorwärtsgehens nutze ich die Javascript-Funktion window.setInterval(), deren Rückgabewert in der Variablen int_ticker gespeichert wird. Sobald der Ticker durch irgendein Ereignis gestoppt wird, wird int_ticker auf NULL gesetzt. Damit stelle ich sicher, dass das automatische Weiterschalten jederzeit fortgesetzt werden kann.

Das Skript in Aktion kann man in dieser Demo sehen.

Newsticker

In unserer Einführung zu jQuery kann man sich die Grundlagen im Umgang mit diesem Framework anschauen.


Jan 18 2008

Mathematische Funktionen mit flot darstellen

Tag: Google,Javascript,jQueryPatrick @ 1:27 am

Angeregt durch einen Artikel von Lutz Tautenhahn über das Zeichnen von Diagrammen und Funktionen mittels Javascript überlegte ich mir, ob es mit Hilfe der Javascript-Bibliothek flot, über die wir bereits berichteten, nicht ebenso möglich ist, mathematische Funktionen darzustellen.

Bereits nach kurzer Zeit hatte ich es geschafft, meine erste Funktion mittels Javascript und flot zu zeichnen. Als mathematisch geprägter Mensch war ich mit den Kompromissen, die ich in Bezug auf das Aufstellen von Gleichungen eingehen musste, jedoch nicht zufrieden und wollte Abhilfe schaffen.

Um es vorweg zu nehmen: Ich hatte Erfolg. Das Ergebnis meiner Bemühungen kann man in dieser Demonstration sehen, die es auch erlaubt komplexere Funktionen zu visualisieren

Das Script macht massiven Gebrauch von regulären Ausdrücken – zum einen um die eingegebene Funktion zu überarbeiten, zum anderen zum darstellen.

Kernstück des Zeichnens von Gleichungen ist die folgende for-Schleife, die einerseits die Aufgabe hat das x in der Funktion bei jedem Durchlauf gegen den Zählerwert zu ersetzen und andererseits das benötige Array, das an flot übergeben wird, bestehend aus x- und y-Wert aufzubauen:

for ( var i = startwert; i <= endwert; i += schrittweite ) { ausgabe = funktion.replace(/x/gi, i); var1.push([i, eval(ausgabe)]); } [/source] Das übrige Javascript dient, wie bereits erwähnt, dazu das Aufstellen von Funktionen sehr zu vereinfachen und für den Menschen intuitiver zu gestalten. Reguläre Ausdrücke übersetzen diese Kürzel und Kurzschreibungweisen in für den Browser verständliche Operationen. Folgende Vereinfachungen habe ich implementiert:

  • 2x anstatt 2*x
  • x(x+2) anstatt x*(x+2)
  • x[5] bzw. (x+2)[5] anstatt Math.pow(x, 5) bzw. Math.pow(x+2, 5) zum Potenzieren
  • ² und ³ wird akzeptiert
  • Leerzeichen können beliebig gesetzt werden
  • gebrochene Zahlen können sowohl mit , als auch mit . geschrieben werden

Ich werde an meinem Script weiter arbeiten, da ich noch etliche Ideen habe, die ich gern umsetzen will.

Unter anderem z.B.

  • Anzeigen von mehr als einer Gleichung
  • Bilden von Ableitungen und Stammfunktion
  • Darstellen einer Funktionenschar (Funktion mit 2 Variablen)
  • Scrollen innerhalb der Grafik
  • Angabe von Extrema und Wendepunkten (Annäherung oder Gleichung) und Markieren dieser
  • Möglichkeit des Einzeichnens der Tangente an einen Punkt (samt Funktion?)

Zur Demoseite


Jan 16 2008

jQuery Version 1.2.2 veröffentlicht

Tag: jQueryTobi @ 11:53 pm

Pünktlich zu seinem 2. Geburtstag bringt jQuery mit der Version 1.2.2 ein Update zur Fehlerkorrektur für jQuery 1.2 Im Framework wurden Fehler behoben und Optimierungen vorgenommen.

Hier die wichtigsten Änderungen:

300% schnellere Ausführung von $(DOMElement)-Zugriffen

Es wurde speziell die Nutzung ein DOM Element in der jQuery Funktion zu durchlaufen beschleunigt. Die Ausführungsgeschwindigkeit unterscheidet sich jedoch von Browser zu Browser.

.ready() Überarbeitung

  • ready-Ereignis im Internet Explorer spürbar verbessert.
  • Alle Browsers warten jetzt bis CSS bereit ist, ebenso wie es bisher bei DOM der Fall war.
  • Es ist jetzt möglich das ready-Ereignis über die normale .bind()-Funktion anzusprechen.

.bind(„mouseenter“) / .bind(„mouseleave“)

Die .hover() Funktion wurde in zwei neue Cross-Browser-Ereignisse geteilt: mouseenter und mouseleave. Diese unterscheiden sich von mouseover und mouseout in sofern, dass diese Ereignisse greifen sobald ein Kind-Element „betreten“ und verlassen wird (was gewöhnlich nicht erwünscht ist).

.bind(„mousewheel“)

Brandon Aaron hat ein Plugin geschrieben, basierend auf der neuen Event API, welches die Unterstützung von Mausrad-Ereignissen ermöglicht.

Complex :not()

Obwohl es nicht Teil der CSS 3 Spezifikation ist, wird nach dieser Funktionalität häufig gefragt. Jetzt können komplexe Ausdrücke in :not() Selektoren gemacht werden.

Akzeptieren von Headern

Für normale jQuery Ajax-Operationen wird jetzt ein extra Accept-Header gesendet, um dem Server mitzuteilen nach welche Art von Inhalt wir suchen. Wenn man ein dataType-Argument festlegt, kümmert sich jQuery um alle Header-Einstellungen. Aktuell werden folgende Header für jeden dataType gesendet:

  • xml „application/xml, text/xml“
  • html „text/html“
  • script „text/javascript, application/javascript“
  • json „application/json, text/javascript“
  • text „text/plain“
  • Everything else: „*/*“

Fehlerbehebungen

Einige Funktionalitäten haben eine wichtige Überarbeitung erfahren.

Event API

Es gibt eine neue API für den Umgang mit Ereignissen. Es können eigene Ereignis-Typen erzeugt werden. Es ist möglich, über die einfache Ereignis-Steuerung hinaus zu gehen und ein komplettes Schema für das Hinzufügen, Behandeln und Abbrechen von Ereignissen auf einem Element zu erzeugen.

Hier kannst du die neuste Version herunterladen (minimale Version)

Hier findest du eine Einführung in jQuery


Jan 05 2008

flot – Diagramme via Javascript erstellen

Tag: Google,Javascript,jQueryPatrick @ 10:41 pm

Flot ist eine Javascript-Bibliothek zum Erstellen von ansprechenden Diagrammen auf einfache Weise. Das dänische Web-Studio Iola entwickelte flot als Plugin für das Ajax-Framework jQuery. Aktuell ist flot in der Version 0.3 verfügbar und wird auf einer Projektseite bei Google Code publiziert.Ich habe ein paar Beispiele erstellt, anhand derer ich die Funktionsweise und die Möglichkeiten von flot aufzeigen will.

Im html-Header müssen zuerst die Javascript-Dateien eingebunden werden. Das wäre zum einen die jQuery- und zum anderen die Flot-Bibliothek. Da Flot die erst mit HTML5 und bisher nur von Firefox unterstützte Canvas-Zeichenoberfläche verwendet, muss zusätzlich die Bibliothek angehangen werden, die Canvas für den Internet Explorer verfügbar macht.

<!--&#91;if IE&#93;><script type="text/javascript" src="excanvas.pack.js"></script><!&#91;endif&#93;-->
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.flot.js"></script>

Anschließend kann man beginnen die Diagramme zu positionieren. Dies geschieht über das div-Element, in dem auch gleich die Ausmaße des Plots angegeben werden. Wichtig ist hierbei das id-Element zum eineindeutigen identifizieren des div.

<div id="dia1" style="width: 500px; height: 200px"></div>

Der „Zaubertrick“ zum einfachen Erstellen von Diagrammen geschieht in einer Javascript-Funktion. Zu aller erst legt man einen oder mehrere Datensätze fest (das können festgelegte Werte sein oder Datenpaare, die man mittels einer Schleife sich erzeugen lässt, sein). Im Anschluss ruft man über die plot-Methode des $-Operator die Funktion zum Erstellen des Diagramms auf und gibt dabei alle benötigen Variablen. Hier ein Beispielaufruf:

$(function () {
	var d1 = [[0, 6], [1, 2], [4, 5], [7, 8], [9, 10]];

	$.plot($("#dia2"), [
	{
		color: "rgb(0, 0, 255)",
		data: d1,
		bars: { show: true }
	}
	]);
});

Wie bereits beschrieben, legt man zuerst den Datensatz fest – im Beispiel d1. Ein Datensatz besteht aus einem Array mit beliebig vielen Elementen, wobei jedes Element ein zweidimensionales Array ist. Das erste Datenpaar lautet [0,6], d.h. für x = 0 ist y = 6.

Der Aufruf der $.plot-Methode erwartet bis zu 3 Parameter. Der erste Parameter enthält die id des div, in das der Plot geschrieben werden soll. Mit zweiten Parameter werden der Funktion sowohl die Daten als auch die Art der Darstellung übergeben. Dies geschieht ebenfalls in einem Array. Würde man also 2 Kurven in ein Diagrammm zeichen wollen, würde ein solcher Aufruf etwa die Form $.plot($(„#dia2“), [{data: d1, lines: { show: true }}, {data: d2, lines: { show: true }} ]); haben. Der dritte Parameter ist optional, also keine Pflicht. Über diesen ist es möglich, das Diagramm an die eigenen Bedürfnisse genauer anzupassen.

Folgende Möglichkeiten zur Darstellungen der Daten (2. Parameterteil) sind verfügbar:

  • color – legt Farbe des Graphen fest
  • data – die zu übergebenden Daten
  • label – Bezeichnung / Titel des Graphen (z.B. in der Legende)
  • lines – Darstellung der Daten als Linie
  • bars – Darstellung der Daten als Balken
  • points – Darstellung der Daten als Punkte
  • shadowSize – Größe des vom Graphen erzeugten Schattens

Zum Formatieren der Legende wurden folgende Optionen implementiert (Auszug):

  • show – erwartet true oder false, je nachdem ob die Legende zu sehen sein soll oder nicht
  • noColumns – Anzahl der Legendenspalten
  • position – erwartet als Parameter „ne“, „nw“, „se“ oder „sw“ um festzulegen in welcher Ecke die Legende stehen soll
  • margin – Abstand der Legende vom Diagrammrand
  • backgroundColor – definiert die Hintergrundfarbe
  • backgroundOpacity: setzt den Transparenzwert (zwischen 0.0 und 1.0)

Es existieren noch unzählige weitere Möglichkeiten zum individuellen Anpassen des Diagramms wie zum Beispiel das Fixieren der Achsenausmaße oder das Festlegen eines Rastes. Wer mehr dazu erfahren will, sollte die Dokumentation lesen.

Verglichen mit der Google Chart API bietet Flot zwar weniger Diagrammarten, läuft dafür aber lokal statt stets über Google. Des weiteren finde ich die Chart API weitaus kryptischer und damit bei komplexeren Diagrammen schwerer handhabbar. Für welchen Art man sich letztlich entscheidet, steht jedem frei.


Nov 29 2007

jQuery – ein mächtiges und effizientes Werkzeug

Tag: jQueryPatrick @ 5:15 pm

Mit diesem Beitrag möchte ich über meine ersten Eindrücke des überaus mächtigen und dennoch schlanken Javascript-Frameworks jQuery veröffentlichen.

Zum Aufbau dieses Beitrags:

  • Was ist jQuery?
  • Wie verwendet man jQuery?
  • Die jQuery-Syntax …
  • … im Vergleich zum gewöhnlichen JavaScript
  • Vorteile / Nachteile

Was ist jQuery?

jQuery ist ein von John Resig entwickeltes, frei verfügbares Javascript-Framework, das über sehr umfangreiche und mächtige Funktionen zur Navigation und Manipulation der DOM-Syntax bereit stellt. Vor allem die vereinfachte Navigation und Einbindung gehören zu den Stärken des JS-Programmiergerüsts. Des Weiteren bietet das Framework elegante und leicht verständliche Funktionen für animierte Effekte, Ajax und Event-Handling.

Aktuell liegt jQuery in der Version 1.2.2 vor.

Wie verwendet man jQuery?

Um jQuery nutzen zu können, bindet man das Framework wie jede andere externe Javascript-Datei in seine Homepage ein. Das Integrieren sollte möglichst bereits im Header geschehen.

<script src="jQuery.js" type="text/javascript"></script></pre>

Die jQuery-Syntax …

Auf die Funktionen von jQuery greift man mittels des $-Operator zu. Zum Verketten von Anweisungen dient der Punkt-Operator ( . ).

Die jQuery-Syntax ist sehr an XPath und CSS-Selektoren angelehnt.

Der Zugriff auf Elemente, denen das id-Attribut zugewiesen wurde, erfolgt mit $(„#meine_id“).

Um auf alle Elemente eines bestimmten Tags zuzugreifen, verwendet man eine Anweisung wie $(„div“).

Der Zugriff aus Kindelemente kann über zwei verschiedene Ausdrücke erreicht werden. Zum einen besteht die Möglichkeit die entsprechenden Anweisungen in einem Aufruf auszuführen, zum Beispiel $(„#meine_id div“) um alle div’s innerhalb des meine_id-Objekts zu addressieren. Zum anderen bietet sich die children-Funktion an. Ein solcher Ausdruck sähe z.B. so aus $(„#meine_id“).children(„div“).

Einen ausführlicherer Überblick über die jQuery-Selektoren wird demnächst folgen.

Um beispielsweise a-Elementen beim Anklicken einen simplen Alert-Aufruf zu spendieren, verwendet man folgende Syntax:

$("a").click(function(){
alert("Vielen Dank für Ihren Besuch!");
return false;
});

Mit $(„a“) wird auf alle a-Element im Document Zugriff genommen. Auf diese Elemente wird ein click-Event angewandt, das beim Anklicken eine Alert-Box öffnet.

Das Absenden eines Ajax-Requests sieht dann wie folgt aus:

$.ajax(

{
type: "POST",
url: "datei.php",
data: "seite=ajaxschmiede&endung=de&inhalt=jquery",
success: function(antwort){
alert( "Senden erfolgreich: " + antwort );
}

});

Weiteres Event-Handling entfällt.

… im Vergleich zum gewöhnlichen JavaScript

Das oben genannte Beispiel mit dem Hinzufügen eines click-Events zu einer Reihe von a-Elementen, würde in normalen Javascript etwa wie folgt aussehen:

var path = document.getElementsByTagName("a");
for ( var i = 1; path[i]; i++ )
{
path[i].onclick(alert("Vielen Dank für Ihren Besuch!");
}

Ein gut implementiertes Script zur Verarbeitung von Ajax-Requests wäre im Vergleich zum übersichtlichen jQuery um einiges umfangreicher und weniger leicht verständlich. Bisher verwendete ich folgendes Script zur Übermittlung von Daten per Ajax:

var isWorking = false;
function my_ajax_request( file, data )
{
var xmlHttp = false;
/* create xmlhttp-element*/
// Mozilla, Opera, Safari and Internet Explorer 7
if (typeof(XMLHttpRequest) != ‚undefined‘)
{
xmlHttp = new XMLHttpRequest();
}
if (!xmlHttp) // IE <= 6 { try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { xmlHttp = false; } } } /* if xmlhttp-element and no request exist */ if (xmlHttp && !isWorking) { /* file request */ xmlHttp.open('POST', file, true); xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); /* executed if state changed */ xmlHttp.onreadystatechange = function () { if (xmlHttp.readyState == 4) // data loaded { if(xmlHttp.status == 200) { // function starts when loaded alert("Senden erfolgreich: " + xmlHttp.responseText); isWorking = false; } if (xmlHttp.status == 404) { // file not found isWorking = false; alert("no file found"); } } } isWorking = true; xmlHttp.send(data); } } [/source] Quelle: http://de.wikipedia.org/wiki/XMLHttpRequest

Vorteile / Nachteile

jQuery ist ein Tool um viel Zeit und Code zu sparen. Mit Hilfe des Frameworks erschafft leicht lesbaren Javascript-Code, der sich leicht weiterverwenden lässt. Durch die enorme Flexibilität der Selektoren, bieten sich dem Designer / Coder nahezu grenzenlose Möglichkeiten. Die vielen bereits vorimplementierten Funktionen wie das Hin- und Herschalten zweier Funktionen auf einem Element (Toggle) oder die Effektfunktionen (Slide, Hide, usw.) ermöglichen es, in wirklich kurzer Zeit interessante Effekte in seine eigene Homepage einzubetten.

Einige praktische jQuery-Beispiele werden folgen.


« Vorherige Seite