Emoji-Auswahl stürzt den Nachrichten-Editor in Android / Chrome ab

Ok, ich habe mir das heute noch einmal angesehen und konnte es reproduzieren, nachdem ich die virtuelle Tastatur auf meinem Handy auf Gboard umgestellt hatte. Gboard löst manchmal keydown- und keyup-Ereignisse zweimal für einen einzelnen Tastendruck aus, und wenn dies für die letzte Taste geschieht, die Sie drücken, bevor Sie ein Emoji aus der Autovervollständigung auswählen, kommt es zu einem Absturz.

Ich bin mir nicht sicher, was Gboard dazu veranlasst, diese Ereignisse zweimal auszulösen, aber es scheint davon abzuhängen, was Sie eingegeben haben und welche Gboard-Einstellungen Sie haben.

Die doppelten Ereignisse verursachen einen Absturz aufgrund der Art und Weise, wie unsere Autovervollständigungsbibliothek konzipiert ist. Die Bibliothek lauscht also sowohl auf keydown- als auch auf keyup-Ereignisse. Bei keydown löscht sie die Autovervollständigungsvorschläge und bei keyup bietet sie neue Vorschläge basierend auf dem neuen Autovervollständigungsbegriff an.

Es gibt jedoch eine kleine Schutzmaßnahme/Optimierung, um die Bibliothek vor doppelter Arbeit zu schützen, wenn sich der Begriff seit den vorherigen Vorschlägen nicht geändert hat, und hier tritt das Problem auf. Das erste Paar von keydown- und keyup-Ereignissen löscht die alten Vorschläge und bietet wie erwartet neue an, aber das zweite fehlerhafte Paar löscht die Vorschläge bei keydown erneut, bietet aber bei keyup keine neuen an, da sich der Autovervollständigungsbegriff nicht geändert hat.

Die einzige am wenigsten umständliche “Lösung”, die mir einfällt, ist, die Schutzmaßnahme/Optimierung zu entfernen, damit die Bibliothek bei keyup immer neue Vorschläge anbietet, aber ich bin mir nicht sicher, ob dies gewünscht oder lohnenswert ist.

Ich weiß, dass wir unsere Autovervollständigungsbibliothek irgendwann neu schreiben wollen (sie ist einer der ältesten Codes in der Codebasis und braucht dringend eine Überarbeitung), also könnte dieser Fehler vielleicht warten, bis wir zur Überarbeitung kommen?

5 „Gefällt mir“