J'ai une instance CKeditor dans mon JavaScript: p> 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> 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> J'ai aussi essayé quelque chose comme P> Mise à jour 1: H2>
selection.selectRange()
4 Réponses :
Consultez la méthode SelectElement () de ckeditor.dom.selection. P>
http://docs.cksource.com/ckeditor_api/symbols/ Ckeditor.dom.selection.html p>
Insérer du texte au point de curseur dans l'éditeur CK P>
Ceci fonctionne pour moi p> li> ul>
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]]); }
J'ai essayé cela et cela fonctionne bien lorsque vous sélectionnez Content dans une seule étiquette comme p code> ou
span code>. 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). Code> Veuillez consulter cet échantillon HTML - Pastebin.com/cktbewqb
Vous pouvez également faire ce qui suit:
Obtenez la sélection actuelle P>
selection.selectElement(selectedElement);
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.