2010-03-05 36 views
10

He creado un complemento para CKEditor, pero se basa en el texto seleccionado actualmente.Obtener el texto seleccionado con CKEditor Plugin en IE

En FF y Chrome puedo usar:

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

pero esto no funciona en IE y solo me dan [object Object]

¿Alguna sugerencia?

Respuesta

19

Esto es lo que yo uso:

var mySelection = editor.getSelection(); 

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

Esto acaba de hacer mi día. ¡buen trabajo! ¡y gracias! – AnApprentice

+0

OK, eso se ve bien, pero ¿dónde lo pongo en mi código de diálogo? Pensé que sería bajo Show: function (AQUÍ) pero me da el error de que selectedText no está definido cuando uso el siguiente código en la sección de contenido. tipo: 'html', html: selectedText – Alex

2

@TheApprentice

lo pones así:

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

... 

con una llamada como ésta:

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

Utilizar :

editor.getSelection().getSelectedText(); 

O:

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

"txtTexto" = ID de etiqueta de área de texto

2

Para aquellos que quieren llenar previamente los campos con una selección, sólo lo hacen de esa manera y segura usted mismo un largo viaje.

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

Have a nice day!

0

En las versiones más recientes de CKeditor, parece que hay un método de manera más fácil:

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