Rozważ następujące contenteditable div.Jak ustawić kursor/pozycję kursora w contenteditable div między dwoma elementami div.
<div contenteditable="true">
<div>bold text</div><div>bold text</div>
</div>
Gdybym ustawić kursor między dwoma div i zacząć wpisywać tekst wychodzi śmiały zamiast wstawiania nowego węzła tekstowego między dwoma div. To samo dzieje się, gdy uderzysz w dom i spróbujesz wpisać coś przed pierwszym divem. Staje się częścią pierwszego div.
Jeśli sprawdzam zawartość startContainer zakresu, który jest zwracany z zaznaczenia, otrzymuję zawartość dla jednego z elementów div zamiast pustego węzła tekstowego, jak można się spodziewać.
Zobacz ten http://jsfiddle.net/9ZZpX/3/
Powstaje pytanie, dlaczego tak się dzieje? Jak mogę wybrać spację między elementami div, aby podczas wpisywania czegoś nie było pogrubione? (Oczywiście mogę dodać miejsce i to działa na problem, ale to jest dość brzydkie.)
Możesz zobaczyć, że działa poprawnie na Facebooku, jeśli wpisujesz @mention w oknie aktualizacji statusu i naciśnij HOME. Jeśli wpiszesz tekst, nie zostanie podświetlony.
Jedyne, co udało mi się wymyślić, to przechwytywanie naciśnięcia klawisza i wstawianie węzła tekstowego programowo, ale wydaje się to brzydkie.
Szukałem jak szalony i nie mogę znaleźć żadnych referencji dokumentujących, jak to naprawdę powinno działać. Jest oczywiście coś, czego nie rozumiem i brakuje dokumentacji w tej dziedzinie.
(To, co chcę zrobić, to wykrycie, gdy kursor ma zamiar wprowadzić jeden z tych elementów div i przeskoczyć nad nim .Jeśli dwa elementy div są obok siebie, kursor przeskakuje do jednego z nich. DIV i Mucks się prace)
Więcej informacji na temat tego, co próbuję zrobić. http://a-software-guy.com/2012/12/the-horrors-of-cursor-positioning-in-contenteditable-divs/
Przegłosowałem artykuł. Dzięki za dokumentowanie! –