L'éditeur CK trouver et remplacer ne fonctionne que pour la première fois puis il donnera une erreur d'index dans les plages .setStart function

L'éditeur CK trouver et remplacer ne fonctionnera que pour la première fois puis il donne toujours une erreur d'index dans les ranges[0].setStart fonction.
J'ai essayé avec editor.updateElement(); Mais ça ne fonctionne pas.

 function test() { try { var editor = CKEDITOR.instances[("<%=ckDescription.ClientID %>")]; var sel = editor.getSelection(); var element = sel.getStartElement(); sel.selectElement(element); var findString = 'FE'; var ranges = editor.getSelection().getRanges(); var startIndex = element.getText().indexOf(findString); if (startIndex != -1) { ranges[0].setStart(element.getFirst(), startIndex); ranges[0].setEnd(element.getFirst(), startIndex + findString.length); sel.selectRanges([ranges[0]]); } var range = sel.getRanges()[0]; range.deleteContents(); range.select(); editor.insertText('For Example'); editor.updateElement(); } catch (e) { alert(e); return false; } return false; } 

Erreur :

IndexSizeError: Impossible d'exécuter 'setStart' sur 'Range': Le décalage 36 est supérieur ou égal à la longueur du noeud (17).

Merci.

Chaque fois avant de créer une instance ckeditor, vous devriez essayer cette CKEDITOR.instances = {}

Parfois, CKEDITOR.instance utilise l'objet pour contenir les instances précédentes comme propriété de l'objet, alors la prochaine fois que la fonction de recherche et de remplacement cessera de fonctionner en raison de l'instance précédente avec la même propriété nommée. La seule solution est donc de détruire l'instance précédente. Une façon est d'appeler

Editor.destroy () / CKEDITOR.instances. ("<% = CkDescription.ClientID%>"). Destroy ()