Оуэн имеет правильную идею. Эти библиотеки заменяют текстовое поле на iframe, а затем переводят документ iframe в режим designMode
или contentEditable
. Это буквально позволяет вам редактировать HTML-документ в iframe, в то время как браузер затем обрабатывает курсор и все нажатия клавиш для вас и дает вам API, который может быть вызван для изменения стиля (полужирный, курсив и т. Д.). Затем, когда пользователь отправляет форму, он копирует innerHTML из iframe в исходную текстовую область. Для получения более подробной информации о том, как включить этот режим и что вы можете с ним сделать, смотрите: https://developer.mozilla.org/En/Rich-Text_Editing_in_Mozilla
Однако я предлагаю вам использовать одну из существующих библиотек управления расширенным текстом, если вы хотите использовать эту возможность на своем сайте. Я уже создал один из них и обнаружил, что вы потратите огромное количество времени на устранение несоответствий браузера, чтобы получить что-то, что хорошо работает. Помимо различий в способах включения функций редактирования, вы также захотите нормализовать созданный HTML. Например, IE создает элементы <br>
, когда пользователь нажимает клавишу ввода, а FF создает теги <p>
. Для изменения стиля IE использует <b>
, <i>
и т. Д., В то время как FF использует интервалы с атрибутами стиля.