javascript - CK editor find and replace will works only first time then it will gives index error in ranges[0].setStart function -
ck editor find , replace work first time gives index error in ranges[0].setstart
function.
have tried editor.updateelement();
it's not working.
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; }
error :
indexsizeerror: failed execute 'setstart' on 'range': offset 36 larger or equal node's length (17).
thanks.
each , every time before creating ckeditor instance should try ckeditor.instances={}
sometime ckeditor.instance object use hold previous instances object property, next time find , replace function stop working because of previous instance same named property. solution destroy previous instance. 1 way call
editor.destroy() / ckeditor.instances.("<%=ckdescription.clientid %>").destroy()