Как программно определить имя экземпляра CKEditor

Я программно добавил экземпляр CKEditor на свою страницу в коде программной части моей страницы ASP.NET:

VB.NET:

itemEditor = New CkEditor
cell.Controls.Add(itemEditor)

... что отлично работает. Я могу получить HTML-код в постбэке и что-то с ним делать.

Однако я также хочу сделать с ним кое-что на стороне клиента, в частности, взять выбранный элемент из другого элемента управления и вставить его в текст, обработав событие onchange .

Итак, как мне получить имя экземпляра редактора в JavaScript, чтобы я мог делать что-то вроде:

function GetCkText()
{
    var htmlFromEditor = CKEDITOR.instances['editorName'].getData();
    // do stuff with htmlFromEditor
}
8
задан codewaggle 18 July 2012 в 17:30
поделиться

2 ответа

Предполагая, что у вас только один экземпляр редактора:

for ( var i in CKEDITOR.instances ){
   var currentInstance = i;
   break;
}
var oEditor   = CKEDITOR.instances[currentInstance];

Вот что JavaScript API говорит о экземплярах .

Вот еще один способ определения CKEditor. Здесь 'fck' - это идентификатор поля ввода:

CKEDITOR.replace( 'fck', {
    customConfig : prefix + 'js/ckeditor/config.js',
    height: 600,
    width: 950
});

editor = CKEDITOR.instances.fck;

Обратите внимание, как я могу ссылаться на экземпляр, используя .fck .

16
ответ дан 5 December 2019 в 07:57
поделиться

Ну я нашел способ... но он мне не очень нравится...

Я добавил элемент управления Hidden Field на страницу, после добавления редактора, и поместил ClientId редактора в его значение:

Dim hdn As New HiddenField
With hdn
    .ID = "HiddenField"
    .Value = itemEditor.ClientID
End With
cell.Controls.Add(hdn)

... и затем в JavaScript я могу получить скрытое поле и, следовательно, имя редактора следующим образом:

function GetCkText()
{
    var hdn = document.getElementById("HiddenField");
    var editorName = hdn.getAttribute("value");
    var editor = CKEDITOR.instances[editorName];
    alert(editor.getData());
    return false;
}

Но это немного неэлегантно, мягко говоря. У кого-нибудь есть способ получше?

0
ответ дан 5 December 2019 в 07:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: