Getting selected text with CKEditor Plugin on IE

只谈情不闲聊 提交于 2019-11-27 12:29:54

This is what I use:

var mySelection = editor.getSelection();

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

Use:

editor.getSelection().getSelectedText();

Or:

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

"txtTexto" = ID of textarea tag

To those who want to prefill fields with a selection, just do it like that and safe yourself a long journey.

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

Have a nice day!

Stephane

@TheApprentice

You put it like this:

( 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);
  }

...

with a call like this:

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

In the newer versions of CKEDITOR, there seems to be a way easier method:

var selectedHTML = editor
                      .getSelectedHtml()
                      .getHtml(); //result: <p>test</p>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!