8
votes

Comment sélectionner une plage de texte dans CKEditor par programme?

Problème:

J'ai une instance CKeditor dans mon JavaScript: p> xxx pré>

et j'ai besoin d'insérer du texte de manière programmative et de sélectionner une plage de texte par la suite. p>

J'ai déjà inséré du texte via p> xxx pré>

mais j'ai besoin de sélectionner (en surbrillance) le mot "foobar", de manière programmable via JavaScript, de sorte que je puisse utiliser sélénium Pour élaborer des tests fonctionnels avec mes plugins CKEDITOR. P>

Mise à jour 1: H2>

J'ai aussi essayé quelque chose comme P>

selection.selectRange()


2 commentaires

J'ai déjà essayé le selectelement, mais sans succès


GetElementsByTag renvoie une collection d'éléments. Vérifiez soigneusement quels sont les objets que vous utilisez, leurs méthodes et leurs propriétés et s'il y a des erreurs. Vous pouvez utiliser les fichiers source CKEditor pour déboguer les appels lorsqu'il n'est pas clair de quelle méthode fait ou pourquoi elle échoue.


4 Réponses :


2
votes

Consultez la méthode SelectElement () de ckeditor.dom.selection.

http://docs.cksource.com/ckeditor_api/symbols/ Ckeditor.dom.selection.html


0 commentaires

0
votes

Insérer du texte au point de curseur dans l'éditeur CK

  • Fonction inservar (myvalue) { Ckeditor.Instances ['Editeur1']. Fire ('inserttext', myvalue); }

    Ceci fonctionne pour moi


0 commentaires

12
votes

Obtenez la sélection actuelle

var findString = 'foobar';
var ranges = editor.getSelection().getRanges();
var startIndex = element.getHtml().indexOf(findString);
if (startIndex != -1) {
    ranges[0].setStart(element.getFirst(), startIndex);
    ranges[0].setEnd(element.getFirst(), startIndex + findString.length);
    sel.selectRanges([ranges[0]]);
}


1 commentaires

J'ai essayé cela et cela fonctionne bien lorsque vous sélectionnez Content dans une seule étiquette comme p ou span . Toutefois, si vous sélectionnez n'importe où après une balise, il lancera une erreur - IndexizeizeError: Impossible d'exécuter 'SetStart' sur 'Plage': Le décalage 364 est supérieur ou égal à la longueur du nœud (37). Veuillez consulter cet échantillon HTML - Pastebin.com/cktbewqb



6
votes

Vous pouvez également faire ce qui suit:

Obtenez la sélection actuelle P>

selection.selectElement(selectedElement);


0 commentaires