Получение выделенного текста с помощью плагина CKEditor в IE - PullRequest
12 голосов
/ 05 марта 2010

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

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

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

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

Есть предложения?

Ответы [ 5 ]

21 голосов
/ 05 марта 2010

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

var mySelection = editor.getSelection();

if (CKEDITOR.env.ie) {
    mySelection.unlock(true);
    selectedText = mySelection.getNative().createRange().text;
} else {
    selectedText = mySelection.getNative();
}
17 голосов
/ 24 февраля 2012

Использование:

editor.getSelection().getSelectedText();

Или:

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

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

3 голосов
/ 13 ноября 2015

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

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

Хорошего дня!

2 голосов
/ 26 сентября 2010

@ 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);
0 голосов
/ 16 ноября 2016

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

var selectedHTML = editor
                      .getSelectedHtml()
                      .getHtml(); //result: <p>test</p>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...