molily: Wieviel Prozent der Leser nutzen Javascript?

Beitrag lesen

Es geht um Listen, deren Positionen man zum Ändern anklickt.

Bisher geht ein neues Fenster auf, zeigt das Änderungsformular samt Dateninhalt. Oder auch nicht. Wenn das Fenster schon mal benutzt wurde, wird es zwar neu geladen, bleibt aber im Hintergrund - trotz Javascript-focus. Üble Sache, die ich spät bermerkte, weil Opera das Fenster nach vorn bringt.

Wieso öffnest du ein Fenster, wenn es solche Probleme bereitet? Die erste Verbesserung wäre, auf das Popup zu verzichten. Was spricht gegen ganz simple Links auf Seiten, die ganz normal im bestehenden Browserfenster angezeigt werden?

So, nun wurde das Formular abgeschickt, die Datenbank geändert. Aber die Liste hat den alten Stand und muss erneuert werden (Ladevorgang Nr.3 nach Formular und Änderungsbestätigung).

Für irgend eine Mini-Änderung müssen bisher drei große Seiten (mit dranhängendem CSS usw.) neu geladen werden.

Das Laden von Seiten ist doch kein grundsätzliches Problem. Man muss es nur richtig machen.

Wenn Einzelseiten groß sind, dann zeige nicht sämtliche Einträge auf einer Seite an, sondern verwende Pagination oder andere Filtermethoden. Diese lassen sich auch mit Ajax verbessern: Man scrollt z.B. herunter und es werden automatisch weitere Einträge geladen. Oder man klickt auf »nächste Seite« und der nächste Packen an Einträgen wird per Ajax geladen und ins Dokument eingefügt. Siehe die Google Ajax-Suche.

Schalte ferner GZip-Komprimierung an und sende Caching-Header, sodass bei keiner Änderung nur »Not Modified« geantwortet wird. Das CSS wird nicht mit jedem Seitenaufruf neu geladen, vorausgesetzt du richtest das Caching vernünftig ein. Der Browser sollte nicht einmal beim Server nachfragen bzw. erst nach Tagen einmal wieder.

Aber grundsätzlich ist es sinnvoll, hier in der Liste ein In-Place-Editing mit Ajax vorzunehmen. D.h. man klickt auf Bearbeiten und das Formular wird im bestehenden Dokument eingeblendet. Sendet man es ab, werden die Änderungen im Hintergrund zum Server übertragen und die Liste wird via JS sofort mit den eingegebenen Daten aktualisiert.

Möchte einfach die Liste in einer Hälfte des Fensters, das Formular in der anderen Hälfte zeigen. Man klickt in die Liste - das Formular wird mit den entspr. Daten gefüllt. Man klickt auf Senden - die Liste wird korrigiert.

Ja, das ist auf jeden Fall ein sinnvoller Anwendungsfall von JavaScript/Ajax.

Aber was hat das mit dem Voraussetzen von JavaScript zu tun? Du musst dazu nicht JavaScript voraussetzen. Du kannst das ganz einfach »unobtrusive« lösen, indem sich die JavaScript/Ajax-Funktionalität einfach dazuschaltet, wenn JavaScript verfügbar ist.

Wenn JavaScript nicht aktiviert ist, führen die Bearbeiten-Links ganz normal zu einem statischen Formular, welches beim Absenden wieder zur Liste führt. Klar, dabei müssen mehr Daten übertragen werden, aber auch das kannst du wie gesagt stark optimieren.

Mathias