Ho un'idea per un'applicazione web per la quale richiedere il controllo completo della funzionalità degli editor di testo incorporati e gli editor di testo devono funzionare allo esattamente nello stesso in tutti i browser. La funzionalità standard contenteditable
non è sufficiente per le mie esigenze in questa occasione.Creare un editor di testo personalizzato basato sul web usando elementi "span": una cattiva idea?
Quindi ho sperimentato vari modi per implementare un editor di testo personalizzato. Il mio primo approccio è stato quello di rilevare i clic del mouse per l'inserimento del caret (anche se senza il caret visibile poiché non sembra essere un modo per ottenere ciò). Questo ha funzionato piuttosto bene, ma sfortunatamente non c'era modo di visualizzare il segno di omissione (noto anche come I-beam lampeggiante).
Ciò significa che anche il mio cerotto lampeggiante deve essere personalizzato. Posso solo pensare a due buoni modi per raggiungere questo obiettivo in modo compatibile con tutti i browser.
La prima opzione (e probabilmente migliore) sarebbe quella di implementare un motore di layout personalizzato in JavaScript, proprio come ha fatto Google con Google Docs.
La seconda soluzione (probabilmente molto più semplice) sarebbe quella di incapsulare ciascun carattere all'interno del proprio elemento
<span>
e quindi di consentire il posizionamento del falso carnet tra caratteri specifici. Ciò significa che ci sarà un sacco di elementi span, ma questo sicuramente realizzerà ciò di cui ho bisogno, sfruttando al contempo il motore di layout del browser. Un altro vantaggio di questo approccio è che non ho bisogno di fare affidamento su hacker di selezione del testo specifici del browser.
Quindi la mia domanda, l'opzione numero 2 è una pessima idea? Se è così, perché?