Witam. Ostatnio na stronie robię wyświetlanie emotek podczas pisania postu (tak jak na Facebooku), i dlatego zamiast elementu <textarea></textarea> musiałem to zrobić w elemencie

z atrybutem contentEditable.
Mój problem jest taki, że w tym elemencie trzeba częściowo samemu obsłużyć pozycję kursora po skonwertowaniu wprowadzonego tekstu na emotki (string.replace i podmiana przez element.val(string)).
Znalazłem w internecie gotowe funkcje na pobranie pozycji kursora i ustawianie go po podmianie tekstu i jakoś to znośnie działa, ale gdy klikne poza polem wprowadzania treści na opcję "Dodaj emotki" i wybiorę emotke z listy to wprowadza ją w pole z treścią nowego postu i na prawidłową pozycję, ale jeśli pozycja kursora (miejsce docelowe emotki) znajduje się tuz na początku nowej linii (którą robi się klawiszem ENTER), a konkretnie na pierwszej pozycji to wstawia jednak emotke do poprzedniej linijki na jej końcu. Gdy jednak w tej nowej linii jest juz wprowadzony jakiś znak to wtedy emotka dobrze jest wstawiana. Wydaje mi się że chodzi o to, że po rozpoczęciu nowej linii dodaje się
na końcu a w kolejnej linijce jest niewidoczny jakiś znak którego nie ogarnia api przeglądarki i podczas pobierania oraz ustawiania pozycji kursora nie bierze tego początku nowej linii pod uwagę i dlatego emotka nie ląduje tutaj. W tych funkcjach wykorzystywane są funkcje typu window getSelection getRangeAt range. Wstawilbym kod ale nie mam w tym momencie takiej możliwości.
Męcze się z tym od kilku dni i nie mogę tego ogarnąć. Z Facebooka ciężko mi wyciągnąć rozwiązanie bo są tam tony javascriptu, ale zauważyłem ze oni dla każdego elementu robią jakieś divy zamiast normalnego HTMLNode typu Text (dla samego tekstu) jak to robi standardowo pole tekstowe (textarea zapewne, i element z atrybutem contentEditable).
Z kolei na portalu fotka zapisują cały obiekt window.getSelection przez jquery $('div.custom-textarea').data(window.getSelection); i potem gdy trzeba przywrócić pozycję kursora to wyciągają to i jakoś nadpisują (nie pamiętam teraz jak to dokładnie było). Może i pomogłoby to jakoś, ale jeśli przykładowo na stronie będę miał wyświetlonych ponad 100 postów (po długim scollowaniu) jak na fejsie I jeszcze mam dynamiczne przechodzenie między stronami przez Ajax, to po dłuższym czasie korzystania z mojej strony użytkownikowi chyba może zapchać przeglądarkę bo chyba Ajax nie usunie tych zapisanych danych sam z siebie ?</p>

Może ktoś ma gotowy kod do tego albo chociaż pomysł jak to ugryźć, byłbym wdzięczny.