开发者

Getting selected text with CKEditor Plugin on IE

开发者 https://www.devze.com 2022-12-21 20:42 出处:网络
I have made a plugin for CKEditor, but it relies on 开发者_开发问答the currently selected text.

I have made a plugin for CKEditor, but it relies on 开发者_开发问答the currently selected text.

In FF and Chrome I can use:

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

but this doesn't work in IE and I only get [object Object]

Any suggestions?


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!


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

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


@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);
0

精彩评论

暂无评论...
验证码 换一张
取 消