Насколько надежно использование contenteditable на div для редактора WYSIWYG?
Я считаю, что название довольно само собой разумеющееся, но все же, возможно, я должен спросить подробно. Я создаю редактор WYSIWYG, и я действительно в начале этого. Итак, я понял, что, возможно, знание плюсов и минусов просветит меня. В основном, мой вопрос заключается в том, поскольку я хочу редактор, который будет работать по крайней мере с 90% во всех основных браузерах, как дальше я могу использовать contenteditable в div и каковы минусы и плюсы использования contenteditable по сравнению с designMode и ифрейме? Кроме того, во время исследования я нашелЭтот редактор . Я считаю, что он не использует ни один из этих атрибутов и перемещает местоположение textarea. Это лучший подход? Ну, я знаю, что есть много факторов, которые влияют на ответ на последний вопрос, но, как я уже упоминал, самое важное, что я ищу в редакторе, - это то, что он может быть использован 90% пользователей. НБ: я не хочу использовать никакие сторонние библиотеки.
3 ответа:
Для большинства применений я по-прежнему предпочитаю iframe с
designMode
в большинстве браузеров и contenteditable<body>
элемент в IE, что облегчает работу. Причины:
- наличие редактируемого содержимого в iframe эффективно изолирует его и позволяет поместить редактор на любую страницу с уверенностью, что события CSS и DOM страницы не могут повлиять на редактируемое содержимое
designMode
более надежен в Firefox. Я видел несколько ошибок сcontenteditable
, которые не существуют сdesignMode
, что, вероятно, связано с тем, что contenteditable был добавлен в Firefox относительно недавно, тогда как designMode существует примерно с 2003 года.Что касается ACE, его подход textarea является умным и имеет много преимуществ, но я подозреваю, что этот подход ограничивается моноширинными шрифтами. Кроме того, CodeMirror 2 использует аналогичный подход, но аналогично ограничивается моноширинными шрифтами.
contentEditable
не работает с поплавками в IE:<p> <img style="float:left" src="foo"> <p contentEditable="true">very long text here ... ... this text won't flow round the image</p> </p>
Это потому, что
contentEditable
запускает печально известныйhasLayout
. Кроме этого, все работает довольно хорошо.
Атрибуты
designMode
иcontentEditable
, а также API, управляющие редакторами rich text, реализованы во всех основных браузерах, включая Firefox, Opera, Safari, Google Chrome и, конечно же, Internet Explorer.Http://blog.whatwg.org/the-road-to-html-5-contenteditable
Марк Финкл написал хорошеерезюме высокого уровня designMode , а позже добавилсообщение о contentEditable .