Как заставить Google Chrome автоматически изменять исходный код HTML-элементов, доступных для редактирования?

Я использую атрибут contenteditable для своего собственного редактора WYSIWYG. Большинство проблем я решил сам, однако одну не могу понять.

Contenteditable ведет себя немного странно, потому что мой редактор генерирует код XHTML, и как только я вставляю этот код в элемент contenteditable, он изменяет его на не-XHTML-код, например:

<h1>headline</h1><br />some text

изменяется на:

<H1>headline</H1><BR>some text

Браузер вносит больше изменений (я использую Google Chrome 7), но я думаю, что этот пример достаточно хорош.

Есть ли способ изменить поведение contenteditable в Chrome, либо не трогать вставленный код, либо включить «режим XHTML»?


person Frodik    schedule 09.10.2010    source источник
comment
Вы отправляете тип содержимого XHTML?   -  person Nick Daniels    schedule 09.10.2010
comment
Невозможно воспроизвести в более старых версиях Chrome — если я не ошибаюсь, v7 — это бета-версия/версия для разработчиков, так что, вероятно, это просто ошибка. Вы должны заполнить отчет об ошибке на домашней странице Chromium.   -  person Maxim Zaslavsky    schedule 09.10.2010
comment
он ведет себя так же и в старых версиях Chrome.   -  person Frodik    schedule 09.10.2010


Ответы (2)


Webkit довольно дерьмовый в отношении того, как он обрабатывает contentEditable, вам придется написать много кода только для него.

Вы можете посмотреть код, существующий в других редакторах, таких как CKEditor и TinyMCE, чтобы увидеть, насколько неприятным он может быть.

person AlfonsoML    schedule 09.10.2010
comment
Что ж, прямо сейчас я использую PHP для постобработки ввода из моего WYSIWYG-редактора, чтобы исправить изменения, доступные для редактирования. Большинство из них - это замены регулярных выражений и т. Д. Это работает, но меня это не устраивает, я бы хотел, чтобы элемент contenteditable прекратил изменять исходный код или делал это в XHTML-режиме. - person Frodik; 10.10.2010

Обслуживание документа с типом содержимого application/xhtml+xml должно включать режим XML.

person Quentin    schedule 09.10.2010
comment
Я попробовал ваш совет, однако обнаружилась другая проблема. Поскольку документ не является действительным на 100% XHTML, Chrome вместо его рендеринга показывает сообщение об ошибке о том, что документ недействителен. Документ недействителен, потому что ранее редактор создавал недействительный код, и, вероятно, это произойдет и в будущем. Поэтому я не могу рисковать тем, что эта недействительная страница приведет к отображению страницы с ошибкой, пользователи этого не оценят :-) Итак, вы думаете, что нет другого способа включить режим contenteditable XHTML или изменить его модифицирующее поведение? выключенный ? - person Frodik; 09.10.2010