Ответ 1
Я разработчик ядра CKEditor. Не надолго - только за последнюю половину года, но я много узнал о том, почему мы используем iframed editable:)
-
Styling - содержимое редактора iframed не наследует стили страницы. Это очень важно, потому что мы не можем стили reset (sic! CSS действительно отстой). Что еще - в iframe мы можем свободно добавлять наши собственные стили, которые тоже полезны.
-
Только в iframed editable мы можем работать на всей странице с помощью head, metas, body styles, title и т.д. Некоторые из наших пользователей нуждаются в этом.
-
Браузеры имеют очень неподходящие (и неполные) возможности контент-контента. Например. угадайте, что произойдет, когда вы введете список в редактируемый, который является элементом
<h1>
в Firefox (вы можете проверить, что в этом редакторе - http://createjs.org/demo/hallo/)? Он вытечет из области редактирования и станет не редактируемым элементом. Мы должны обрабатывать эти случаи вручную в редакторе, и это действительно тяжелая работа:). -
Я не уверен в этом, но я считаю, что
designMode
, который позволяет переключать весь документ в редактируемую область, был первым, аcontenteditable
- позже. Поэтому и причина может быть исторической - трудно перейти от одного подхода к другому. -
Возможно, есть еще несколько причин, по которым мы используем iframed editable. Я обновлю свой ответ, когда узнаю их:)