У меня нет опыта работы с CKEditor, но я знаю, что это возможно с TinyMce. Что вам нужно сделать, это написать собственный плагин, который обеспечит необходимую функциональность.
OnNodeChange во 2-й текстовой области (той, что с вашим css), вам нужно обновить заголовок первых редакторов iframe. Этот фрагмент кода, который должен быть выполнен для специального действия (например, onNodeChange), должен указать вам правильное направление:
var DEBUG = false;
var css_code = tinymce.editors[1].getContent(); // get content of 2nd editorinstance on page (your css)
iframe_id = tinymce.editors[0].id+'_ifr';
with(document.getElementById(iframe_id).contentWindow){
var h=document.getElementsByTagName("head");
if (!h.length) {
if (DEBUG) console.log('length of h is null');
return;
}
var newStyleSheet=document.createElement("style");
newStyleSheet.type="text/css";
h[0].appendChild(newStyleSheet);
try{
if (typeof newStyleSheet.styleSheet !== "undefined") {
newStyleSheet.styleSheet.cssText = css_code;
}
else {
newStyleSheet.appendChild(document.createTextNode(css_code));
newStyleSheet.innerHTML=css_code;
}
}
Имейте в виду, что этот код будет добавлять новую таблицу стилей каждый раз, когда она вызывается, что приводит к увеличению заголовка iframes редактора. Поэтому я думаю, что перед использованием нового стиля лучше всего очистить последний вставленный стиль. Достаточно удалить последний узел головы шозльд.