Риск использования contentEditable в IE

Мы должны добавить в наш продукт базовый редактор HTML. Поскольку в настоящее время мы поддерживаем только IE (большинство клиентов все еще используют IE 6), мне посоветовали использовать встроенные в Internet Explorer возможности редактирования XHTML - например, <div contentEditable="true">, как описано в разделе «Редактирование веб-страницы».

Кроме не работает в других браузерах. (Руководство не считает это проблемой. Наши клиенты будут мириться с тем, что наше программное обеспечение работает только с IE. Мы никогда не теряли денег из-за того, что наше программное обеспечение работает только в IE; большинство клиентов в настоящее время все равно разрешат своим сотрудникам использовать IE6. )

Какие другие проблемы мы можем столкнуться с contentEditable?


Обновить

Редактор HTML, который я написал с помощью «contentEditable», оказалось очень сложно получить надежным, поскольку многие проблемы. Если бы мне пришлось сделать это снова, я бы очень сильно перешел на одно из многих решений с открытым исходным кодом (например, TinyMCE) или купил бы поддерживаемый редактор HTML.

Несомненно, что очень опытный программист на jscript может заставить «contentEditable» работать хорошо при наличии достаточного количества времени. Просто все примеры в сети выглядят такими простыми, пока вы не протестируете обычные операции, такие как вырезание / вставка из слова и попытка редактирования полученного HTML. (как раз то, что будет делать покупатель)

(Просто найдите «contentEditable» в stackoverflow, чтобы получить представление о проблемах, с которыми столкнулись другие люди)


person Ian Ringrose    schedule 29.01.2009    source источник
comment
+1 за то, что рассказывал людям, насколько проблематичным может быть контент.   -  person Nico Burns    schedule 24.08.2011
comment
Кажется, что contenteditable уже должна быть стабильной, но проблемы по-прежнему остаются. Например, динамическое содержимое может действительно нарушать HTML-код всякий раз, когда вы вырезаете-вставляете, как описано здесь: stackoverflow.com/questions/19871978/   -  person NoBugs    schedule 22.11.2013
comment
@NoBugs, Контент, вставленный из слова, а затем недоступный для редактирования, сводил меня с ума! Word создал законный HTML, с которым было сложно справиться с contentEditable.   -  person Ian Ringrose    schedule 22.11.2013
comment
@IanRingrose Интересно, в каком браузере это было? Не могли бы вы привести пример?   -  person NoBugs    schedule 22.11.2013
comment
@NoBugs, это было давно, я помню, у IE были проблемы, возможно, это был IE6, который использовали многие наши клиенты.   -  person Ian Ringrose    schedule 23.11.2013


Ответы (6)


Свойство contentEditable работает в Safari, Firefox 3 и Opera 9.

Поскольку манипуляции, несомненно, будут осуществляться посредством выбора, вашей самой большой проблемой будет получение выбора / диапазонов, работающих в разных браузерах (см. здесь).

Также существует множество мелких ошибок в браузерах, которые могут вас укусить, а могут и не укусить. К ним относятся несовместимая чувствительность к регистру, несовместимые методы его повторного отключения (removeAttribute против установки на false).

Несмотря на эти недостатки, я считаю, что он работает довольно хорошо.

person Borgar    schedule 30.01.2009

Как насчет использования решения с открытым исходным кодом, которое работает во всех основных браузерах?

TinyMCE

Есть и другие проекты, но я бы использовал именно их.

person Ionuț G. Stan    schedule 29.01.2009
comment
Спасибо, мы рассмотрели TinyMCE, однако его лицензия должна быть рассмотрена руководством, а также могут потребоваться судебные издержки при проверке лицензии. Поэтому мне приходится использовать contentEditable = true, если я не найду вескую причину не использовать его. - person Ian Ringrose; 29.01.2009

HTML 5 включает атрибут contenteditable, поэтому похоже, что он будет в IE для долгое время впереди.

Только что получил письмо от кого-то из команды IE

Хотя практически невозможно комментировать будущее с высокой степенью уверенности, справедливо сказать, что я не знаю о каких-либо планах по удалению contentEditable, и если бы он был удален, это сломало бы МНОГО сайтов.

person Ian Ringrose    schedule 29.01.2009
comment
Значит, вы позволили разработчикам IE остаться в живых? - person EaterOfCode; 21.09.2012
comment
contenteditable кажется широко поддерживаемым ... однако события на этом contenteditable кажутся в значительной степени противоречивыми (т.е.) ... - person Cory Mawhorter; 12.05.2013

Быстрый поиск в Google привел к появлению сообщения в блоге о некоторых (хотя и незначительных) проблемах ContentEditable.

person TJ L    schedule 29.01.2009

contentEditable работает в Firefox 3. Я не знаю никаких проблем с contentEditable.

person luiscubal    schedule 29.01.2009

Я бы просто обязательно проверил, какой контент вы получите обратно, поскольку вставка XSS-атак в IE довольно проста, если нет проверки добавленного HTML-контента.

person scunliffe    schedule 29.01.2009
comment
предполагая, что он используется в ненадежной среде - person NoBugs; 23.11.2013
comment
Есть ли проблемы с безопасностью, если я использую функцию strip_tags до сохранения данных и разрешаю только <b><strong><i><em><u>? - person Matthew Johnson; 21.03.2014