Получение выделенного текста с помощью плагина CKEditor в IE

Я создал плагин для CKEditor, но он полагается на выделенный текст.

В FF и Chrome я могу использовать:

var selectedText = editor.getSelection().getNative();  

но это не работает в IE, и я получаю только [object Object]

Любые предложения?

Ответ 1

Это то, что я использую:

var mySelection = editor.getSelection();

if (CKEDITOR.env.ie) {
    mySelection.unlock(true);
    selectedText = mySelection.getNative().createRange().text;
} else {
    selectedText = mySelection.getNative();
}

Ответ 2

Применение:

editor.getSelection().getSelectedText();

Или:

CKEDITOR.instances["txtTexto"].getSelection().getSelectedText()

"txtTexto" = идентификатор тега textarea

Ответ 3

@TheApprentice

Вы говорите так:

( function(){

  var getSelectedText = function(editor) {
    var selectedText = '';
    var selection = editor.getSelection();
    if (selection.getType() == CKEDITOR.SELECTION_TEXT) {
      if (CKEDITOR.env.ie) {
        selection.unlock(true);
        selectedText = selection.getNative().createRange().text;
      } else {
        selectedText = selection.getNative();
      }
    }
    return(selectedText);
  }

...

с таким вызовом:

onShow: function() {
  // Get the element currently selected by the user
  var editor = this.getParentEditor();
  var selectedContent = getSelectedText(editor);

Ответ 4

Для тех, кто хочет заполнить поля с помощью выделения, просто сделайте это так и убедитесь в долгом путешествии.

onShow: function() {
    this.setValueOf( 'tab-id', 'field-id', editor.getSelection().getSelectedText().toString() );
},

Приятного дня!

Ответ 5

В более новых версиях CKEDITOR, похоже, есть более простой способ:

var selectedHTML = editor
                      .getSelectedHtml()
                      .getHtml(); //result: <p>test</p>