javascript - CK 编辑器查找和替换仅在第一次时有效,然后它将在 range[0].setStart 函数中给出索引错误

标签 javascript jquery ckeditor

CK 编辑器查找和替换仅在第一次时有效,然后它总是在 ranges[0].setStart 函数中给出索引错误。
我尝试过 editor.updateElement(); 但它不起作用。

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;


   }

错误:

IndexSizeError: Failed to execute 'setStart' on 'Range': The offset 36 is larger than or equal to the node's length (17).

谢谢。

最佳答案

每次在创建 ckeditor 实例之前你都应该尝试这个 CKEDITOR.instances={}

有时 CKEDITOR.instance 对象用于将先前的实例保存为对象属性,因此下次查找和替换功能将停止工作,因为先前的实例具有相同的命名属性。所以唯一的解决办法就是销毁之前的实例。一种方法是调用

editor.destroy()/CKEDITOR.instances.("<%=ckDescription.ClientID %>").destroy()

关于javascript - CK 编辑器查找和替换仅在第一次时有效,然后它将在 range[0].setStart 函数中给出索引错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29910435/

相关文章:

javascript - 如何使用 jquery 根据第一次点击获取下一个元素的值

javascript - jQuery 通过按下按钮更改 div 的内容(include())

javascript - 悬停时将 flex 子级扩展到全宽

javascript - 切换类/ID

javascript - 如何根据所选的单选按钮调用函数

javascript - 网格/框 View 以适应所有屏幕尺寸

jquery - ListView 分隔符 JQuery Mobile

javascript - CKEditor "insertHtml"适用于 FF 但不适用于 IE8

javascript - Cckeditor 4.4.7 增强图像插件 : figcaption with tags

javascript - 在 CKEditor 4 中为链接添加内联样式