Подтвердить что ты не робот

Как создать текстовый редактор

Эй, все, что я хочу знать, какова концепция создания богатого текстового редактора. Я имею в виду, как создать богатый текстовый редактор. Я хочу изучить реализацию.

PS: пожалуйста, предложите использовать YUI или любую другую встроенную библиотеку. Я хочу сделать его своим.

Итак, что за концепция?

Спасибо:)

4b9b3361

Ответ 1

Самый простой способ - это следующее. Он используется TinyMCE и CKEditor и многие другие. Есть много вариантов: в частности, если вы создаете редактор кода, есть умные трюки, которые вы можете сделать, используя текстовые поля и моноширинный шрифт.

  • Динамически создавать iframe и размещать редактируемый контент в этом документе iframe
  • Установите iframe для редактирования, либо установив его свойство designMode в свой документ "on", либо установив для свойства <body> element contentEditable значение true. Обратите внимание, что designMode поддерживает предшествующие contentEditable в Firefox и, как следствие, намного менее глючит.
  • Добавить кнопки (например, жирный, курсив, вставить изображение и т.д.) где-то разумный (например, непосредственно над редактируемым iframe) в основном документе, который действует на выбранный контент в iframe. Все браузеры поставляют метод execCommand() (см. MSDN и MDN, например) для выполнения многих из этих действий, хотя есть некоторые различия в том, как они работают и какая надбавка они производят.

Это самые основы того, как это работает. Есть много других, сложных вещей, которые делают большинство редакторов, которые не сразу очевидны, отчасти, чтобы устранить многие различия между браузерами и частично обеспечить дополнительную функциональность, не охватываемую встроенными командами браузера. Это очень сложная и трудная вещь, чтобы получить право, требует высокой степени экспертизы и приверженности и не является чем-то, что нужно воспринимать легкомысленно.

Ответ 3

Я не буду предлагать вам смотреть на других, но я бы предложил взглянуть на jWYSIWYG, чтобы увидеть, как он закодирован в JQuery.