Używam twemoji bibliotekę wyświetlanie emotikonów w polu tekstowym (contanteditable dz):Praca z emotikonami w edytowalny div
<div contenteditable="true" id="input_div"></div>
użytkownik może dodawać emotikony za pomocą przycisku zewnętrznego, więc mogę go dodać do dział po prostu (pozwala nie dbają o położeniu karetki):
div.innerHTML += twemoji.parse(emoji);
następny trzeba uzyskać dane wejściowe użytkownika z div z emotikonami, czy jest jakiś prosty sposób przekonwertować z powrotem do znaków unicode?
moje obecne rozwiązanie here (ja po prostu analizować <img>
aby atrybut alt), ale myślę, że to wygląda trochę trudne i nie mogę używać div.innerText
własność (dość wygodne, aby dostać tekst z div) bo ja straciłem emotikony . Również używam div.getInnerText
aby zapobiec włożeniem HTML lub obrazów ze schowka:
div.addEventListener("insert",() => {setTimeout(div.innerText = div.innerText,0)})
Otrzymasz coś takiego z powrotem jako innerHTML edytowalnego elementu, '' - abyś mógł ponownie go sparsować z pliku img src (widząc, że '1F600' jest punktem kodowym, z którego tworzysz emoji, więc wydaje się, że jest to bezpośrednio odzwierciedlone w nazwie pliku obrazu.) – CBroe
@ CBroe, proszę odnieść mój link do plunkera, który jest dokładnie taki jak teraz (analizuję atrybut alt, ale to nie ma znaczenia), a dla mnie wygląda niewygodnie, ponieważ używam właściwości div.innerText, aby uzyskać czysty tekst z div bez żadnego html – Leo
_ "Analizuję atrybut alt, ale to nie ma znaczenia" _ - ma to znaczenie, jeśli atrybut alt nie zawiera tego, co chcesz. 'alt =" "' - czy widzisz tam zastępczą postać? (To jest skopiowane z prostego logowania innerHTML do konsoli.) To najprawdopodobniej oznacza, że biblioteka, której używasz, zapisała do atrybutu, nie jest poprawnym punktem kodowania Unicode. (Widzę dokładnie tę samą postać pod twoim tekstem, gdy kliknę przycisk "pobierz tekst" - więc twój kod działa, działa tylko na danych wejściowych, które już zostały uszkodzone.) – CBroe