Stranger Than Usual

Den Button neu erfinden

Ich ärgere mich ja immer mal wieder darüber auf, dass es Single-Page-Apps so verbreitet sind. Eine HTML-Seite, Unmengen an Javascript, lange Ladezeiten, komische Bugs. Das habe ich zum Beispiel in diesem Blogpost aus 2024 dargelegt. Auch 2010 habe ich schon einen rant darüber geschrieben.

Ein weiterer dummer Aspekt ist, dass man in solchen single-page-apps jede Menge Funktionalität re-implementieren muss, die der Browser von Natur aus schon kann. Navigation zwischen „Seiten“ zum Beispiel, die in einer SPA natürlich rein clientseitig passiert. Und ich muss zugeben, dass ich hier Teil des Problems bin. Nicht privat, aber beruflich. Nicht, weil es mir gefällt, sondern weil es unmöglich ist, Kunden und Kollegen davon zu überzeugen, es anders zu machen (sprich: Alle Grundfunktionen sollten ohne JS laufen, JS wird nur dort eingesetzt, wo es nicht anders geht oder um den Komfort zu erhöhen).

Wo ich nicht Teil des Problems bin, ist aggressiver Einsatz von nicht-semantischem HTML. Zum Beispiel ein <span> mit einem onClick-Handler versehen und es dann wie einen Link zu behandeln. Das ist nicht barrierefrei, umgeht wichtige Funktionen des Browsers (wie z.B. das „in neuem Tab öffnen“) und ist schlicht und einfach falsch.

Jetzt könnte man sagen: „Ja, aber man kann ja alle diese Eigenschaften vergeben.“ Mit aria-Rollen, noch mehr Javascript, Fokussierbarkeit usw. Kann man vielleicht. Ich habe einen Artikel gefunden, in dem jemand das mal gezielt ausprobiert hat: If you want to create a button from scratch, you must first create the universe.

Das Ergebnis ist: etwa 500 Zeilen Javascript-Code, und das Ergebnis ist in keiner Weise besser als ein einfaches <button>. Und in der Praxis macht sich keiner diese Mühe, und es kommt ein blasser Schatten eines Buttons heraus. Aber wir müssen halt immer wieder das Rad neu erfinden.