Риск использования contentEditable в IE
Мы должны добавить базовый редактор HTML к нашему продукту. Поскольку в настоящее время мы поддерживаем только IE (большинство клиентов все еще используют IE 6), мне сказали использовать встроенные в Internet Explorer возможности редактирования XHTML - например, <div contentEditable="true">
как объяснено в " Редактировании веб-страницы" .
Помимо не работает в других браузерах. (Руководство не считает, что это является проблемой. Наши клиенты будут мириться с нашим программным обеспечением, работающим только с IE. Мы никогда не теряли денег из-за того, что наше программное обеспечение работает только в IE; большинство клиентов в любом случае в настоящее время разрешают только своим сотрудникам использовать IE6.)
Какие еще проблемы мы можем получить с contentEditable?
Обновить
Редактор HTML, который я написал с помощью "contentEditable", оказался очень трудным для получения надежности, со многими проблемами. Если бы мне пришлось сделать это снова, я бы очень настаивал на одном из многих решений с открытым исходным кодом (например, TinyMCE) или покупал в поддерживаемом редакторе HTML.
Нет сомнений в том, что очень опытный программист на jscript может заставить "contentEditable" работать хорошо при достаточном времени. Просто все примеры в Интернете выглядят так просто, пока вы не протестируете обычные операции, такие как вырезание / вставка из слова и попытка редактировать полученный HTML. (только то, что будет делать клиент)
(Просто найдите "contentEditable" в stackru, чтобы получить представление о проблемах, которые были у других людей)
6 ответов
Свойство contentEditable работает в Safari, Firefox 3 и Opera 9.
Поскольку манипулирование, несомненно, будет осуществляться с помощью выборок, вашей самой большой проблемой будет заставить выбор / диапазоны работать в разных браузерах ( см. Здесь).
Существуют также многочисленные небольшие ошибки в браузерах, которые могут вас укусить или не укусить. К ним относятся несовместимая чувствительность к регистру, несовместимые методы его повторного выключения (removeAttribute vs. установка в false).
Несмотря на эти недостатки, я считаю, что это работает довольно хорошо.
HTML 5 включает атрибут contenteditable, поэтому, похоже, он будет в IE еще долго.
Только что получил письмо от кого-то из команды IE
Хотя в принципе невозможно с уверенностью комментировать будущее, справедливо сказать, что я не знаю о каких-либо планах по удалению contentEditable, и, если он будет удален, это сломает МНОГО сайтов.
Как насчет использования решения с открытым исходным кодом, которое работает во всех основных браузерах?
Есть и другие проекты, но я бы этим воспользовался.
Я бы просто проверил, какой контент вы получаете обратно, так как вставка XSS-атак довольно проста в IE, если нет проверки добавленного HTML-контента.
contentEditable работает под Firefox 3. Я не знаю никаких проблем с contentEditable.