JavaScript, AJAX und die zu beachtenden Abhängigkeiten

Ich hatte vor ein paar Monaten eine Testseite eingerichtet, welche meine Besucher bezüglich der Einstellungen von JavaScript testet und dies auch nur einmalig tut, solange dieser Besucher die selbe IP hat. Diese Tests haben immer gewisse Grauzonen in denen man Fehler macht. Für manche mag es ein Fehler sein, dass ich auch Bots teste. Dies tue ich aber mit voller Absicht, da AJAX Inhalte oftmals nicht unobtrusive dargestellt werden und daher sehr wohl von Interesse ist, wie weit angebotene Inhalte tatsächlich gelesen werden können.
Ich führe zwei Haupttests durch. Einer testet auf aktiviertes JavaScript, indem ein einfacher AJAX Request gefeuert wird, welcher dann gezählt wird. Der andere testet mittels eine durch JavaScript eingebundenen Pixelbildes (1x1Pixel groß), welches beim Aufruf auch zählt.

AJAX

Der erste Test wird, wie von mir erwartet, oft häufiger bestanden, da es hier weniger Abhängigkeiten gibt. Einzig die Möglichkeit XMLHttpRequest abzusenden muss gegeben sein, wenn der Browser halbwegs aktuell ist. In einer funktionalen Umgebung muss aber auf folgendes geachtet werden:

  • Das gewünschte Verhalten muss unbedingt auch ohne JavaScript erreicht werden:
    • Eine zu ladende Seite muss auch ohne JavaScript aufgerufen werden.
      • Echte <a> Anker verwenden, die nur mittels onclick/onmouseover Aktionen ausführen
      • Forms nicht nur über form.submit() absenden, sondern echte Forms anbieten.
    • Eine anzuzeigende Datei muss dennoch angezeigt werden.
      • Bilder in Galerien immer direkt referenzieren und Aktionen nur zusätzlich anbieten.
      • Downloads von Dateien immer direkt referenzieren oder mittels redirect aufrufen, wenn kein JavaScript aktiv ist.
  • Den Benutzer nicht durch Hinweise auf deaktiviertes JavaScript zum aktivieren nötigen. Im Normalfall können, oder wollen Nutzer dies gar nicht ändern. Dazu gibt es mehrere Gründe.
    • Diese Hinweise erscheinen, weil sie normalerweise barrierearm gestaltet sind fast immer in Suchmaschinen. Dies wirkt unprofessionell und ist reiner Datenmüll.
    • Viele Policies in Firmen lassen die Benutzer ihre Einstellungen nicht ändern. Nutzerfrust ist das Ergebnis.
    • Manche Besucher wollen überhaupt nichts an den Einstellungen ändern!

Ich hatte irgendwann in einem anderen Beitrag einmal geschrieben, dass sich Webentwickler verhalten sollten wie Bauherren. Man würde auch nie auf die Idee kommen, zwei Meter hohe Treppenstufen vor das Haus zu bauen, nur weil es hübsch aussieht.

Pixelbild

Beim Pixelbild ist man von mehreren anderen Faktoren abhängig.

  • Das Bild könnte von einem anderen Server kommen und dadurch geblockt werden.
  • Der Client/Browser zeigt generell keine Bilder an.
  • Das Bild könnte von einem Server kommen, der von Werbeblockern gesperrt wird.
  • Wenn das Bild dann eventuell noch über einen <noscript> Tag eingebunden ist, führt dies zwar zu vermehrter Anzeige bei deaktiviertem JavaScript, die werbegeblockten und fremden Server bleiben dennoch oft aussen vor.

Fazit

Meine Tests sind also nicht unbedingt repräsentativ, da auf meinen Seiten nicht der wirkliche Durchschnitt des Webs unterwegs ist. Dennoch zeigt es Tendenzen. Und man kann es nur wiederholen: Ob es nun 5% oder 30% der Nutzer sind, die man von einem Service, Angebot, Bestellmöglichkeit oder nur von einer Information ausschließt. Es sind im besten Fall 5% Nutzer die sich dies beim Konkurrenten, der ihnen keine Barrieren bietet, kaufen oder in Erfahrung bringen. Draußen würde darauf niemand verzichten wollen.

Zur Zeit habe ich meine Statistik nochmals getuned und daher die Datenbank geleert, so dass bei einem Anfangsdatensatz von 0/0/0 noch sehr kleine %Werte erscheinen. Dies ist nicht verwunderlich, da ich sehr häufig von Bots heimgesucht werde. Das Ergebnis wird sich aber in den nächsten Stunden einpendeln.