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

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

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

 Pekka 웃27 июн. 2012 г., 10:48
Вам придется использовать файл таблицы стилей, нет нормального способа передачи стилей из одного документа в другой
 Stefan27 июн. 2012 г., 10:07
Может быть, вы знаете параметр для применения стиля страницы? Все, что я нашел, это применить конкретный CSS-файл к tinymce, но не применять весь стиль страницы.
 Pekka 웃26 июн. 2012 г., 09:53
в этом случае вы бы активно применяли стили страницы к iframe (у всех больших редакторов WYSIWYG есть опция для этого). Я согласен, что бывают ситуации, когда вы бы предпочли, чтобы это было так, как вы описали
 Stefan26 июн. 2012 г., 09:51
Но не может ли быть проблема, когда вы помещаете текст обратно на оригинальный сайт? Как и на форуме, вы вводите текст статьи, а затем публикуете ее на странице. Затем вы хотите стиль оригинального документа, чтобы увидеть, как он выглядит ...
 Pekka 웃26 июн. 2012 г., 09:33
Я думаю, что одна из главных причин это стиль. Правила CSS из родительского документа неизбежно влияют на WYSIWYG, что часто приводит к проблемным результатам.

Ответы на вопрос(2)

Решение Вопроса

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

Styling - content of the iframed editor doesn't inherit styles of the page. This is extremely important, because we cannot reset styles (sic! CSS really sucks). What's more - in iframe we can freely add our own styles which is helpful too.

Only in iframed editable we can work on entire page with head, metas, body styles, title, etc. Some of our users need this.

Browsers have very buggy (and incomplete) impls of contenteditable. E.g. guess what will happen when you paste list into the editable which is a <h1> element on Firefox (you can check that in this editor - http://createjs.org/demo/hallo/)? It will leak out of editable area and become a non-editable element. We have to handle these cases manually in the editor and this is really hard work :).

I'm not sure about this but I believe that designMode wich allows to switch entire document into the editable area had been first and contenteditable came later. So the reason may be historical too - it's hard to switch from one approach to another.

Probably there're more reasons why we use an iframed editable. I'll update my answer when I'll learn them :)

 Stefan27 июн. 2012 г., 14:17
Большое спасибо, это действительно помогло!

Из крошки

Hi Zappino!

It is the very nature of editors like TinyMCE to use an IFrame because in a frame you can modify any part of an HTML document to suit your needs without breaking anything in the main page's document. Especially if you want to edit a complete HTML document including the parts between and you won't be able to do so without an IFrame.

Cross Domain Skripting will occur if you store TinyMCE's files on a different (sub-)domain than the page from which you embed the editor. Show us a test scenario of your installation with which you are having trouble and someone might be able to help you out!

Greetings from Germany (back to Germany )

Felix Riesterer.

 26 июн. 2012 г., 10:52
+1 Точно, вот и все. И это причина, почему все (насколько я знаю) мощные редакторы WYSIWYG используют iframe.
 Stefan26 июн. 2012 г., 13:07
Спасибо за ваш отзыв

Ваш ответ на вопрос