Si consideri il seguente div contenteditableCome impostare la posizione di cursore/cursore in un div in contentedabile tra due div.
<div contenteditable="true">
<div>bold text</div><div>bold text</div>
</div>
Se posiziono il cursore tra i due div e inizio a digitare il testo esce grassetto invece di inserire un nuovo nodo di testo tra i due div. Lo stesso accade se colpisci a casa e provi a digitare qualcosa di fronte al primo div. Diventa parte del primo div.
Se analizzo lo startContainer dell'intervallo restituito dalla selezione, ottengo il contenuto di uno dei div anziché di un nodo di testo vuoto come mi aspetterei.
Vai a questa http://jsfiddle.net/9ZZpX/3/
La domanda è: perché questo accade? Come posso selezionare lo spot tra i div in modo che quando scrivo qualcosa non sia in grassetto? (Ovviamente posso aggiungere uno spazio e questo aggira il problema ma è abbastanza brutto.)
Si può vedere questo funziona correttamente su Facebook se si inserisce un @mentione in una casella di aggiornamento stato e si preme HOME. Se si digita il testo non verrà evidenziato.
L'unica cosa che ho potuto pensare è di intercettare il keypress e inserire un nodo di testo a livello di codice, ma questo sembra brutto.
Ho cercato come un matto e non riesco a trovare riferimenti che documentano come questo dovrebbe funzionare. C'è ovviamente qualcosa che non capisco e in questo campo manca davvero la documentazione.
(Quello che voglio essere in grado di fare è anche rilevare quando il cursore sta per entrare in uno di questi div e saltarci sopra. Se i due div sono l'uno accanto all'altro, il cursore salta in uno di il div e mucks le opere)
Maggiori informazioni su quello che sto cercando di fare. http://a-software-guy.com/2012/12/the-horrors-of-cursor-positioning-in-contenteditable-divs/
Ho effettuato il rialzo per l'articolo. Grazie per la documentazione! –