Getting selected text with CKEditor Plugin on IE

送分小仙女□ 提交于 2019-12-17 10:42:25

问题


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?


回答1:


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



回答2:


Use:

editor.getSelection().getSelectedText();

Or:

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

"txtTexto" = ID of textarea tag




回答3:


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!




回答4:


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



回答5:


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

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


来源:https://stackoverflow.com/questions/2385609/getting-selected-text-with-ckeditor-plugin-on-ie

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!