archivioctt

I problemi con l'HTML, quelli veri, non finiscono veramente mai... ma in generale con i browser, perché non è manco tanto la sintassi #HTML il problema, ma il che cazzo i navigatori combinano con dei certi elementi fantastici ed attributi che lo sono un po' meno. Per la puntata di oggi: le caselle di inserimento di testo custom su #mobile sono un troiaio assoluto, e la confusione attorno all'argomento non fa che peggiorare la mia già forte pazzia!!! 😩😭

C'è una serie di problemi (mica uno solo!) per cui su mobile (e nello specifico mi interessa su #Android, visto che non ho lo spiacere di usare iOS), ci sono glitch nell'interazione tra tastiere virtuali e campi di testo non-vanilla, come le <textarea> usate dal Monaco Editor ed Xterm.js. Beh, se per un editor di codice c'è Ace Editor come sostituto perfetto, mi trovavo in difficoltà sull'avere un emulatore terminale funzionante, visto che Xterm.js è l'unico che si trova in giro... e di implementarne uno a metà io che funziona peggio non ho voglia. Quindi, via di provine, a questo punto. 🧨

TLDR: per gli elementi di input testuale, esiste l'attributo stringa #autocomplete, che quando non specificato è tipo su "on", può assumere una caterva di valori intermedi supportati solo da alcuni browser solo in alcune circostanze, e ciò che davvero interessa è settarlo su "off" per suggerire all'user-agent di non fare autocompletamento del testo, quindi non anticipare l'utente con le parole e idealmente non (dis)correggerlo. E la rogna è che di suggerimento si tratta, perché a quanto pare su mobile ognuno fa il cazzo che vuole, a partire dal browser e a finire con la tastiera... ☢️

Dai miei test devo decretare che Firefox se ne frega completamente dell'attributo, sia su <input type="text"> che su <textarea>. Su Chromium e derivati sembra funzionare, invece, in quanto l'applicazione imposta la tastiera virtuale in modalità textNoSuggestions, cosa che si evince anche dal fatto che sparisce la barra dei suggerimenti... o almeno, ci prova, ma sembra non funzionare su tutte le tastiere; per esempio, su quella di Samsung non sparisce... ma, allo stesso tempo, anche senza autocomplete="off", quella è una delle poche che non ha comunque i #bug di inserimento. ☕

Qui in video, infatti, si vede (vedersi è un parolone, perché la MIUI censura la tastiera nelle registrazioni schermo, ma gli #input si notano) la differenza tra Firefox e Chromium con OpenBoard, derivata della tastiera AOSP, che sul cellulare è l'unica che trovo veramente comoda, mentre sul tablet Samsung la predefinita è OK. (GBoard merda, ma in ogni caso ha gli stessi problemi di questa, la codebase è la stessa... l'unica altra che so funzionare bene è Hacker's Keyboard, ma è scomodissima.) Xterm.js sempre con autocomplete="off", ma la volpe se ne frega. 🤡

Ma comunque, i bug sono in ogni caso infiniti qui, almeno assumendo la tastiera AOSP. Pure con questo aggiustamento, Xterm.js mi si mangia un carattere di spazio a sinistra quando premo invio per andare a capo, come se assieme alla newline venisse inviato un backspace, cosa che negli altri casi non succede... E poi, ovviamente, su Monaco non funziona il backspace su caratteri di whitespace, ed ho il sospetto che sia perché nella <textarea> invisibile usata per gestire l'input il testo viene segmentato, e i token di whitespace non vengono inseriti, e qualcosa fa si che i backspace non vengano registrati su una casella dunque vuota... ma se lo tenga pure Microsoft, il suo editor sminchiato. 💩

La cosa più strana però, in tutta questa storia, è un'altra: essendoci di mezzo tutti questi casi limite, nessuno si è reso conto che la cosa minima da fare è impostare autocomplete="off" sui campi di testo che usano handling custom. Su Firefox non funziona, OK, ma finché Mozilla non si sveglia useremo semplicemente Chromium. Non so per Monaco, ma per Xterm.js qualcuno aveva suggerito di fare questa cosa (#2403:529574475), ma alla fine non è stata mai fatta, perché ad altra gente non funzionava, e quindi l'hanno derubricata. Però poi, entrambi i progetti mettono altri attributi inutili... 👹

Vedete perché si dice che fare volontariamente sviluppo web è sintomo di malattia mentale? In entrambi i progetti, le <textarea> nascoste implementano l'attributo autocorrect="off", che sono abbastanza sicura sia frutto di un'allucinazione collettiva. Documentandosi un minimo, si scopre non solo che è non-standard (ma questo sembrano saperlo tutti), ma che è supportato solo da Safari, dove però supporta solo "true" e "false", non "on" e "off". L'attributo che certamente non funziona lo mettono tutti, ma quello che forse funziona nessuno... vi prego, salvatemi da questo #web di incompetenti!!! 💉