Ajax / Kritische Aspekte

© 2006 Tim Baumgarten


[Inhaltsverzeichnis][Zurück: Vorteile & Abgrenzung][Weiter: Bibliotheken & Frameworks]

Kritische Aspekte

Der Euphorie die Ajax verursacht hat, stehen auch kritische Stimmen gegenüber. Neben normaler Skepsis die wohl allem Neuen gegenüber besteht, gibt es auch reale Probleme die es zu lösen gilt. Erst dann wird Ajax vermehrt in umfangreichen Anwendungen statt nur in Beispielen zu sehen sein.
Vielfach wird als KO-Kriterium angeführt, dass ein ein aktueller Browser Voraussetzung ist und Benutzer älterer Versionen ausgeschlossen werden. Da aber spätestens seit 2002 jeder erschienene Browser die für Ajax benötigten Funktionalitäten mitbringt, kann man dieses Argument eigentlich nur noch in Ausnahmefällen gelten lassen.

Im Folgenden sind einige weitere Problempunkte aufgeführt:

Kritik am Namen

Obwohl sich der Begriff Ajax inzwischen weitestgehend durchgesetzt hat, ist auch der Name an sich in der Kritik. Viele halten den Namen für schlecht gewählt da wesentliche namensgebende Bestandteile für das Konzept hinter Ajax gar nicht notwendig bzw. austauschbar sind und der wichtigste Baustein XHR nichtmal explizit erwähnt wird. Ajax ist weder auf XML noch auf Javascript noch zwingend auf Asynchronität festgelegt.

So wundert es nicht das es einige Alternativvorschläge gibt, die sich aber wohl nicht mehr einbürgern werden. Ein paar Beispiele sind:

JavaScript

JavaScript, die Komponente die alle Teile von Ajax zusammenhält, kann obwohl in allen aktuellen Browsern vorhanden, aus diversen Gründen deaktiviert worden sein. Es hängt dann von der Website ab ob sich diese dann trotzdem noch verwenden lässt. Um Benutzer ohne JavaScript nicht auszuschließen sollten im Idealfall zumindest die Grundfunktionen auch ohne JavaScript zur Verfügung stehen. Ist JavaScript dann doch aktiviert, lassen sich die vorhandenen Funktionen ohne Probleme erweitern. Eine ähnliche Möglichkeit bieten <noscript>-Tags, deren Inhalt vom Browser nicht verarbeitet wird wenn JavaScript aktiviert ist.

Barrierefreiheit

In eine ähnliche Richtung geht die Kritik bzgl. mangelnder Barrierefreiheit. Sind alle Funktionen nur mit JavaScript verfügbar, kann kein Screenreader etwas mit einer Seite anfangen. Auch hier liegt es am Betreiber Alternativen zu bieten die ohne JavaScript funktionieren. Desweiteren sind Ajax bzw. DHTML Anwendungen meistens nur mit der Maus bedienbar, hier sollte man darauf achten eine Steuerung durch die Tastatur nicht unnötig zu erschweren bzw. erst zu ermöglichen.

Zurückbutton / Lesezeichen

Der Zurückbutton eines Browsers funktioniert im allgemeinen nur mit einer Abfolge von nacheinander geladenen Seiten. Wird hingegen auf einer Seite der Inhalt durch Ajax ausgetauscht, wird der Mechanismus der Browsernavigationsbuttons umgangen. Sollte der Zurückbutton trotzdem benutzt werden, hat dies meistens nicht den gewünschten Effekt.

Will ein Benutzer für eine Seite und deren aktuellen Inhalt ein Lesezeichen erstellen oder diese jemand anderem zukommen lassen treten ähnliche Probleme auf. Da sich beim Benutzen der Seite die URL nicht ändert, kommt bei einem Aufruf des Links oder des Lesezeichens nur die Startseite bzw. der Startzustand weil der eigentlich gewünschte Inhalt erst durch Interaktion des Users mit der Seite angezeigt wird.

Einen Lösungsansatz für diese Problematik basiert darauf den Fragmentbezeichner (der Teil hinter dem #) einer URL nicht als klassische Sprungmarke sondern als eine Inhaltsadresse bzw. Zustandsanzeiger zu benutzen. Dadurch das während der Benutzung gleichzeitig die URL angepasst wird, funktioniert ein Bookmarken und in den meisten Browsern auch der Zurückbutton wieder. (Eine ausführliche Beschreibung dazu gibt es unter anderem in diesem Artikel.)

Suchmaschinen

Das gleiche Problem gibt es mit Suchmaschinen, sind Inhalte nicht innerhalb des HTML Dokumentes verlinkt und dementsprechend über direkte URLs erreichbar, ist für Suchmaschine das Indizieren unmöglich. In diesem Fall hilft auch der Fragmentbezeichner nicht weiter, daher muss man, will man gefunden werden, alle Inhalte auch ohne Ajax erreichbar und verlinkt bereitstellen.