Состояние доступного для контента
Разметка, созданная редакторами wysiwyg, является жестокой. Его усеяно атрибутами стиля и часто даже не является допустимым HTML (отсутствующие закрывающие теги, дублирование стилей и т.д.). Существуют ли какие-либо установленные решения проблем, введенных contenteditable
? Если нет, как я могу создать его?
Недопустимый HTML
Например, после ввода неупорядоченного списка, за которым следует строка текста в популярном текстовом редакторе, мне представлен следующий HTML-код:
<ul><li>foo</li><li>bar</li></ul><div>baz
Откуда появился тэг div
? Почему он не закрывается? Почему, конечно, не абзац - правильно закрыт? Это можно предотвратить?
Не семантический HTML
Другой редактор выпустил следующее:
<p style="font-size:11pt; line-height:115%; margin:0pt 0pt 0pt 36pt; text-indent:-18pt"><span style="color:#000000; font-family:Arial; font-size:11pt; font-style:normal; font-weight:normal; text-decoration:none">●</span><span style="font:7.0pt 'Times New Roman'"> </span><span style="color:#000000; font-family:Arial; font-size:11pt; font-style:normal; font-weight:normal; text-decoration:none">Lorem</span></p><p style="font-size:11pt; line-height:115%; margin:0pt 0pt 0pt 36pt; text-indent:-18pt"><span style="color:#000000; font-family:Arial; font-size:11pt; font-style:normal; font-weight:normal; text-decoration:none">●</span><span style="font:7.0pt 'Times New Roman'"> </span><span style="color:#000000; font-family:Arial; font-size:11pt; font-style:normal; font-weight:normal; text-decoration:none">ipsum</span></p>
Это допустимая разметка, но она семантически ужасна! Вместо стилизованного неупорядоченного списка редактор вставил буквенные символы пули. Как разработчик, я понятия не имею, что делать с разметкой contenteditable
. Что касается стиля, это совершенно бесполезно.
Замены
До недавнего времени я использовал Markdown как инструмент для генерации семантически корректного HTML-кода у пользователей. Тем не менее, Markdown не хватает некоторых функций, которые запрашивают мои пользователи (простота использования для не-техников, позиционирования изображений и т.д.). После поиска редактора wysiwyg, который будет генерировать допустимую семантическую разметку в течение нескольких недель, я обнаружил, что contenteditable
делает это невозможным. Кто-то где-то говорит о решениях этих проблем? Как я могу участвовать.
[Обновить] Уточнение
Полагаю, я не был полностью прояснен. Я не прошу о том, чтобы обойти проблемы contenteditable
. Я нашел много таких, включая большинство из упомянутых ниже. То, что я пытаюсь найти, является основной причиной этих проблем. Почему contenteditable
так сломан? Это связано с техническими проблемами или проблемами устаревшего кода? Более того, что делается для его исправления и где эта работа выполняется?
[Обновить] Документы Google
HTML во втором примере выше приведен в редакторе Документов Google. Однако, как показано ниже, AlfonsoML, Google Docs не использует contenteditable
в своем редакторе. Их техника объясняется здесь.