Hallo, ich bin ein Fan von Discourse und komme von einer kleinen Community, die über eine Migration von vBulletin5 nachdenkt. Eine Person war gegen Discourse, weil „das Hijacken von Strg+f böse ist", und nachdem ich verstanden habe, was damit gemeint ist, muss ich zustimmen. Es gibt ein ernstes Usability-Problem damit, wie Discourse derzeit Strg+f behandelt – die Tastenkombination des Browsers für „Text auf dieser Seite suchen".
Das Problem
- Manchmal funktioniert Strg+f wie vorgesehen: Discourse nutzt die integrierte Suchfunktion des Browsers, sodass die Seite beim Tippen sofort zum ersten Treffer scrollt. Mit Strg+G springt man zum nächsten Treffer.
- Das Leben ist gut.
- Manchmal funktioniert Strg+f nicht und zeigt stattdessen eine Liste von Ergebnissen aus einer Datenbank-Suche an.
- Die Seite scrollt nicht automatisch zum ersten Treffer, während der Benutzer tippt.
- Der Suchbegriff wird nur hervorgehoben, wenn er sich zufällig bereits auf dem Bildschirm befindet.
- Es ist nicht möglich, nach zu kurzen Begriffen wie „UX" zu suchen.
- Strg+G wird nicht akzeptiert, um zum nächsten Treffer zu springen.
- Es werden jedoch Ergebnisse für irrelevante Themen angezeigt, die Strg+f nicht gezeigt hätte, wenn der Begriff auf der Seite nicht gefunden worden wäre.
- Warum dies funktioniert oder nicht, ist für die Benutzer völlig unsichtbar, aber es ist extrem frustrierend. Sie haben das Gefühl, die Möglichkeit, innerhalb einer Seite zu suchen, sei ohne Erklärung genommen worden.
- Es hilft nicht, ihnen zu sagen, dass ein zweimaliges Drücken von Strg+f eine Browsersuche auslöst, da dies Posts, die tatsächlich existieren, nicht finden würde.
Die Ursache
Dies ist kein kosmetisches Problem, sondern ein fundamentales Usability-Problem, das Discourse an der Wurzel beheben muss: die Illusion, dass sich das gesamte Gespräch im DOM des Browsers befindet, obwohl es dynamisch geladen wird.
Wenn ein Thema mehr als zwanzig Beiträge enthält, sendet Discourse die Beiträge nur bei Bedarf an den Browser. Man könnte einen Thread mit über 1000 Beiträgen ansehen, ohne den Server nennenswert zu belasten, da der Großteil des DOM nur aus leeren Platzhaltern besteht. Das ist eine brillante Idee, aber genau das führt dazu, dass Strg+f mysteriös versagt.
Ich schlage nicht vor, diese Illusion aufzugeben, denn ich halte sie für wertvoll. Discourse hatte recht, die alte Methode zu verwerfen, bei der Gespräche in willkürliche Seiten mit jeweils etwa 40 Beiträgen aufgeteilt wurden.
Discourse muss lediglich besser darin werden, diese Illusion nahtlos zu gestalten.
Lösungen
Um ehrlich zu sein, kenne ich die beste Lösung dafür nicht, aber ich habe einige Gedanken, die hoffentlich hilfreich sein werden.
Bewusstes Brechen der Illusion
Zunächst hier einige einfache Ideen, die vernünftig sind, wenn Discourse die Illusion bricht, indem es auf eine Datenbank-Suche umschaltet:
- Informieren Sie den Benutzer darüber, was passiert. Zeigen Sie eine kleine Notiz an der Stelle an, an der normalerweise das Suchfeld des Browsers erscheint, mit einer Entschuldigung und Erklärung.
- „Wir entschuldigen uns, aber dieses Thema enthält 1002 Beiträge, während Ihr Browser nur 7 davon geladen hat. Daher funktioniert die Seiten-Suche wahrscheinlich nicht. Wenn Sie es dennoch versuchen möchten, drücken Sie erneut Strg+f."
- Geben Sie dem Benutzer etwas Kontrolle. Wenn ein Benutzer Strg+f drückt, zeigen Sie einen Button an, mit dem der Benutzer den Text aller Beiträge des Themas manuell in das DOM laden kann.
- Falls dies aufgrund der Begrenzung auf 100 gleichzeitig im Browser zwischengespeicherte Beiträge als unmöglich erachtet wird, zeigen Sie einen Button an, der es Benutzern ermöglicht, auf die alte Art der Themenansicht zurückzugreifen: aufgeteilt nach Seiten.
- „Klicken Sie hier, um dieses Thema so anzuzeigen, dass es mit Strg+f funktioniert: [Seite 1] [2] [3] [4] [5] [6] [7] [8] [9] […] [>>]"
- Erhöhen Sie den Standard-Schwellenwert von 20 auf 100 Beiträge. Dies könnte nicht allzu schwierig zu ändern sein, da Discourse bereits in der Lage ist, so viele Beiträge im DOM zu zwischenspeichern.
Reparatur der Illusion
Natürlich sind diese Ideen unansehnlich, und ich betrachte sie nur als Überbrückungslösungen. Letztendlich wäre die beste Lösung, wenn Discourse Strg+f so implementieren würde, dass es so funktioniert, wie Benutzer es erwarten. Die Nachbildung dessen, was der Browser für die interaktive Suche tut, wäre in Discourse sehr lohnenswert, aber ich stelle mir das als schwierig vor.
Es könnte jedoch eine (relativ) einfache Lösung geben.
Text nicht aus dem DOM entfernen
Ich glaube, die beste Lösung für Discourse besteht darin, nur Medienobjekte aus den Beiträgen zu entfernen, nicht jedoch den Text. Dann wäre es nicht notwendig, Strg+f zu „hijacken" und durch eine Datenbank-Suche zu ersetzen.
Die Seiten-Suche sucht nur nach Text, daher muss der Browser nicht das gesamte DOM geladen haben, um danach suchen zu können. Text ist unglaublich leicht zu übertragen, insbesondere wenn der HTTP-Server die gzip-Komprimierung aktiviert hat. Text belegt im Webbrowser auch nur wenig Speicherplatz.
Sie alle kennen dies besser als ich, aber ich habe einige Vermutungen:
- Durchschnittliche Beitragsgröße: 5 KiB Text
- Durchschnittliche Themenlänge: 50 Antworten
- Durchschnittlich zu übertragender Text: 250 KiB, was vernünftig erscheint.
Natürlich zählt jedes Byte für die Reaktionsfähigkeit. Wenn meine Schätzungen falsch sind und die Größe des Textes ein Problem darstellt, könnte das Auffüllen des DOM mit Text als Hintergrundprozess erfolgen, nachdem die wichtigen Teile der Seite gesendet wurden. Wenn das DOM zum Zeitpunkt, an dem der Benutzer Strg+f drückt, noch nicht vollständig mit Text gefüllt ist, kann ein Ladebalken erscheinen, der den Benutzer auffordert, zu warten, und den Fortschritt anzeigt, während der Text nach und nach geladen wird.
Vielen Dank
Obwohl es ein ernstes Problem ist, dass Strg+f die von Discourse geschaffene Illusion bricht, bin ich beeindruckt von der erstaunlichen Arbeit, die die Discourse-Entwickler geleistet haben, um diese Illusion überhaupt erst zu schaffen. Ich bin zuversichtlich, dass sie auch für dieses Problem die richtige Lösung finden werden.
Vielen Dank, dass Sie sich die Zeit genommen haben, meine Vorschläge zu prüfen.
Mit freundlichen Grüßen,
Mx. F.N.