在IE上使用CKEditor插件获取所选文本

时间:2010-03-05 09:19:34

标签: javascript internet-explorer plugins ckeditor

我为CKEditor创建了一个插件,但它依赖于当前选择的文本。

在FF和Chrome中我可以使用:

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

但这在IE中不起作用,我只得到[object Object]

有什么建议吗?

5 个答案:

答案 0 :(得分:21)

这就是我使用的:

var mySelection = editor.getSelection();

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

答案 1 :(得分:17)

使用:

editor.getSelection().getSelectedText();

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

“txtTexto”= textarea标签的ID

答案 2 :(得分:3)

对于那些想要用选择来填充字段的人来说,就这样做,并确保自己长途跋涉。

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

度过美好的一天!

答案 3 :(得分:2)

@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 :(得分:0)

在较新版本的CKEDITOR中,似乎有一种更简单的方法:

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