Owen ma właściwy pomysł. Te biblioteki zastępują obszar tekstowy ramką iframe, a następnie umieszczają dokument iframe w trybie designMode
lub contentEditable
. To dosłownie umożliwia edycję dokumentu html w elemencie iframe, gdy przeglądarka obsługuje wtedy kursor i wszystkie naciśnięcia klawiszy, a także api, które można wywoływać w celu zmiany stylu (pogrubienie, kursywa itd.). Następnie, gdy użytkownik przesyła formularz, kopiuje innerHTML z elementu iframe do oryginalnego obszaru tekstowego. Aby uzyskać więcej informacji o włączaniu tego trybu i o tym, co można z nim zrobić, zobacz: https://developer.mozilla.org/En/Rich-Text_Editing_in_Mozilla
Jednak moją propozycją jest użycie jednej z istniejących bibliotek kontroli tekstu sformatowanego, jeśli chcesz, aby ta funkcja była dostępna w Twojej witrynie. Zbudowałem go wcześniej i okazało się, że spędzasz mnóstwo czasu zajmując się niespójnościami przeglądarek, aby uzyskać coś, co działa dobrze. Oprócz różnic w sposobie włączania funkcji edycji, będziesz również chciał znormalizować tworzony html. Na przykład IE tworzy elementy <br>
, gdy użytkownik naciśnie klawisz Enter, a FF utworzy znaczniki <p>
. W przypadku zmian stylu IE używa <b>
, <i>
itp., Podczas gdy FF używa przęseł z atrybutami stylu.
Ma to sens, ale jak zobaczyłbyś kursor, gdyby na nim był element div? – Petras
W rzeczywistości kursor jest umieszczony na wyświetlaczu i zarządzany przez javascript. Użytkownik nie wchodzi w interakcję z tekstem. –