2012-06-26 3 views
11

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

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

+4

Я думаю, одна из главных причин - это укладка. Правила CSS из родительского документа неизбежно влияют на WYSIWYG, что часто приводит к проблемным результатам. –

+2

Но не могло быть проблемы, когда youz вернул текст на веб-сайт origninal? Как форум, вы вводите текст для статьи, а затем публикуете его на странице. Затем вы просматриваете стиль исходного документа, чтобы посмотреть, как он выглядит ... – Stefan

+2

, в этом случае вы бы активно применяли стили страницы к iframe (для этого нужны все большие редакторы WYSIWYG). Я согласен, что есть ситуации, когда вы предпочитаете, чтобы это было так, как вы описываете. –

ответ

11

Я - разработчик ядра CKEditor. Не в течение длительного времени - только за последнюю половину года, но я узнал много о том, почему мы используем фреймы редактируемых :)

  1. Styling - содержание фреймов редактора не наследуют стили стр. Это очень важно, потому что мы не можем сбросить стили (sic! CSS действительно отстой). Более того - в iframe мы можем свободно добавлять собственные стили, которые тоже полезны.

  2. Только в iframed editable мы можем работать на всей странице с головой, метасами, стилями кузова, заголовком и т. Д. Некоторым из наших пользователей это нужно.

  3. Браузеры имеют очень неподходящие (и неполные) импликации контента. Например. угадайте, что произойдет, когда вы вставьте список в редактируемый, который является элементом <h1> на Firefox (вы можете проверить, что в этом редакторе - http://createjs.org/demo/hallo/)? Он вытечет из области редактирования и станет не редактируемым элементом. Мы должны обрабатывать эти случаи вручную в редакторе, и это действительно тяжелая работа :).

  4. Я не уверен в этом, но я считаю, что designMode, который позволяет переключать весь документ в область редактирования, был первым и contenteditable пришел позже. Поэтому и причина может быть исторической - трудно перейти от одного подхода к другому.

  5. Возможно, есть еще несколько причин, по которым мы используем iframed editable. Я обновлю свой ответ, когда узнаю их :)

+0

спасибо большое, это действительно помогло! – Stefan

4

From the tinymce froum

Привет Zappino!

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

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

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

Felix Riesterer.

+1

+ 1 Именно так. И именно по этой причине все (насколько мне известно) мощные редакторы WYSIWYG используют iframe. – Thariama

+0

спасибо, за отзыв – Stefan

Смежные вопросы