Состояние удовлетворенного
Разметка, созданная редакторами 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 Docs Editor. Однако, как указывает AlfonsoML ниже, Документы Google не используют contenteditable
в своем редакторе. Их методика объясняется здесь.