2010-03-05 7 views
10

J'ai créé un plugin pour CKEditor, mais il dépend du texte actuellement sélectionné.Obtenir le texte sélectionné avec CKEditor Plugin sur IE

FF et Chrome je peux utiliser:

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

mais cela ne fonctionne pas dans IE et je reçois seulement [object Object]

Toutes les suggestions?

Répondre

19

C'est ce que j'utilise:

var mySelection = editor.getSelection(); 

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

Ce que fait ma journée. Bon travail! et merci! – AnApprentice

+0

OK, ça a l'air bien, mais où est-ce que je mets ça dans mon code de dialogue? Je pensais que ce serait sous la fonction onShow: (ICI) mais j'obtiens l'erreur que selectedText n'est pas défini quand j'utilise le code ci-dessous dans la section du contenu. Type: 'html', html: selectedText – Alex

2

@TheApprentice

Vous formulons ainsi:

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

... 

avec un appel comme celui-ci:

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

Utilisation :

editor.getSelection().getSelectedText(); 

Ou:

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

"txtTexto" = ID de la balise textarea

2

Pour ceux qui veulent préremplir les champs avec une sélection, il suffit de faire comme ça et en toute sécurité vous-même un long voyage.

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

Passez une bonne journée!

0

Dans les versions les plus récentes de ckeditor, il semble y avoir une méthode plus facile:

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