Как некоторые редакторы WYSIWYG сохраняют форматирование вставленного текста? В качестве примера я скопировал курсивный красный текст из текстового редактора в WYSIWYG, и он сохранил цвет и стиль текста, как это происходит? Я думал, что JavaScript имеет доступ только к тексту буфера обмена. Разве это не так? Если да, то что это?
Как некоторые редакторы WYSIWYG сохраняют форматирование вставленного текста?
Ответы (4)
Во время операции копирования / вставки происходит согласование типа контента между источником и целью. Бывает примерно так:
- Вы копируете что-то в буфер копирования и вставки. Скопированные данные более или менее помечаются типом MIME и тем, кто их туда поместил.
- При вставке цель вставки сообщает системе копирования и вставки, что она понимает определенный список типов MIME.
- Система копирования и вставки сопоставляет доступные форматы с желаемыми форматами и находит
text/html
в обоих списках. - Кто-то (вероятно, исходный источник данных) затем преобразует буфер вставки в
text/html
и помещает его в редактор.
Примерно так все и работало, когда я занимался разработкой X11 / Motif (эй, убирайтесь с моей лужайки, гнилые дети!), Поэтому я предполагаю, что все делают это примерно так же.
<textarea>
редактируемым <div>
, а браузер обеспечивает согласование типа контента для редактируемого <div>
.
- person mu is too short; 19.12.2010
У JavaScript вообще нет прямого доступа к буферу обмена. Однако все основные браузеры, выпущенные за последние несколько лет, имеют встроенное средство редактирования WYSIWYG с помощью атрибута / свойства contenteditable
любого элемента (что делает редактируемым только этот элемент) и свойства designMode
объектов документа (что делает весь документ редактируемый).
Пока пользователь редактирует контент на странице, если они запускают вставку (с помощью сочетаний клавиш, таких как Ctrl + V или Shift + Вставить или через меню «Правка» или контекстное меню), браузер автоматически обрабатывает весь процесс вставки без какого-либо вмешательства со стороны JavaScript. Часть этого процесса включает в себя сохранение форматирования везде, где это возможно.
Однако создаваемый HTML-код может быть ужасным и сильно различается в зависимости от браузера. Многие редакторы WYSIWYG, такие как TinyMCE и CKEditor, используют уловки, чтобы перехватить вставленный контент и очистить его до того, как он достигнет редактируемой области редактора.
То, что вы видите, - это редактор форматированного текста. В этой статье Википедии есть информация: http://en.wikipedia.org/wiki/Online_rich-text_editor
Я думаю, он вместо этого скопировал выбранный DOM