2012-02-02 2 views
0

создать экземпляр CKEditor вроде этого:Update CKEditor с помощью JavaScript, после экземпляр уже создан

include 'ckeditor/ckeditor.php'; 
$CKeditor = new CKeditor(); 
$CKeditor->basePath = './ckeditor/'; 
$config = array(); 
echo '<textarea name="content" id="content"></textarea>'; 
$config['contentsCss'] = 'style1.css'; 
$config['ImageUpload'] = false; 
$config['toolbar'] = 'Basic'; 
$events = array(); 
$CKeditor->replace('content', $config, $events); 

Теперь я хотел бы изменить некоторые детали конфигурации (например, «contentsCss») с помощью JavaScript, когда этот экземпляр уже были созданы. Это возможно?

Моя идея была эта (которая не работает, к сожалению):

<a href="#" onclick="CKEDITOR.instances.content.config.toolbar = 'Full'; return false;">change toolbar style</a> 
+0

Замена таблицы стилей «вживую» с использованием JavaScript * может * быть возможно как-то, но может оказаться очень сложной и/или шаткой. Не стоит ли просто перезагружать редактор новыми настройками? –

ответ

3

Пробовал много разных вещей, и в конечном итоге с этим:

<script type="text/javascript"> 
function updateCKEditor() { 
    var editor = CKEDITOR.instances.content; 
    if (editor) { 
     editor.destroy(true); 
    } 
    var newConfig = { skin : XYZ, toolbar : 'Basic', contentsCss : '' }; 
    CKEDITOR.replace('content', newConfig); 
} 
</script> 
1

Вы могли бы использовать что-то вроде этого :

CKEDITOR.instances.yourEditorsId.window.$.document.getElementsByTagName("link")[0].href = 'new/path/style.css'; 

Где yourEditorsId, вы уже догадались, ID вашего редактора, и 0 является показателем вашего таблицы стилей.

+0

Спасибо! У экземпляра редактора нет дочернего «окна», не так ли? – caw

+1

У этого свойства окна есть экземпляр вашего редактора, который является оберткой вокруг реального объекта окна. Он добавляет некоторые удобные методы для окна. –

+0

Благодарим вас за дополнительную информацию! – caw

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