Ho una pagina con un'area di testo molto lunga utilizzata per la modifica di grandi quantità di testo. Normalmente, mentre si digita, quando il cursore si avvicina alla parte inferiore dell'area di testo, la pagina scorrerà automaticamente per mantenere il cursore sempre all'interno del viewport (Firefox scorrerà di una riga alla volta, Chrome scorrerà il cursore al centro di il viewport).Come mantenere sempre un punto di accesso del textarea all'interno del viewport?
Il mio problema deriva dal fatto che sto modificando a livello di codice il contenuto dell'area di testo in base a ciò che l'utente digita. In alcuni casi ciò comporta l'aggiunta di contenuti extra, quindi la visualizzazione del caret non viene eseguita.
Non appena l'utente preme un tasto, lo scorrimento automatico viene attivato e il cursore viene spostato in vista, ma non prima, così come l'utente sta digitando, perde di vista il cursore. Speravo di poter semplicemente attivare eventi chiave nell'area di testo affinché il browser eseguisse lo scorrimento automatico, ma gli eventi attivati non emulano completamente il comportamento degli utenti e non ottengo una risposta.
L'unica soluzione che posso vedere ora è quello di cercare di ottenere le coordinate XY del punto di inserimento da:
- Trovare la posizione del carattere del cursore.
- Costruire un div che rispecchia il contenuto della textarea con un marcatore nella posizione del cursore.
- Misurazione della posizione dell'indicatore.
C'è un modo più semplice per farlo?
può essere correlato: http://stackoverflow.com/a/12738472/1615483 –