Подтвердить что ты не робот

HTML WYSIWYG edtor: почему редактируемый контент перемещается в iFrame

Почему редактируемый html перемещается в iFrame? Я проанализировал разные редакторы (TinyMce, CKEditor и т.д.) И все перемещал редактируемый контент в отдельный iFrame, который они лежали над исходным текстом.

Какова техническая причина этого. Я экспериментировал с contenteditable="true", который является основой всех этих редакторов, и еще не нашел причины для этого.

4b9b3361

Ответ 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. Я обновлю свой ответ, когда узнаю их:)

Ответ 2

От tinymce froum

Привет, Zappino!

Это та самая природа редакторов, как TinyMCE, для использования IFrame, потому что в кадре вы можете изменить любую часть HTML-документа в соответствии с вашими нуждается в том, чтобы ничего не сломать в документе главной страницы. Особенно, если вы хотите редактировать полный HTML-документ, включая между ними, и вы не сможете этого сделать без IFrame.

Скрипт кросс-домена будет возникать, если вы храните файлы TinyMCE на другой (суб) домен, чем страница, с которой вы вставляете редактор. Покажите нам тестовый сценарий вашей установки, с которым вы имеете и кто-то может помочь вам!

Приветствия из Германии (обратно в Германию)

Феликс Рисерер.