http://jiangzhenghua.iteye.com/blog/793282
今天写了一段代码:目的是向CKEditor中插入数据如下:
- function insertSrc(srcArray){
- var i=0
- for (i=0;i<=srcArray.length;i++)
- {
- var oEditor = CKEDITOR.instances.articleContent;
- var editorData_old = oEditor.getData() ;
- var editorData_new = editorData_old.substring(0,editorData_old.indexOf('</head>'))
- +
- srcArray[i]
- + editorData_old.substring(editorData_old.indexOf('</head>')) ;
- oEditor.setData(editorData_new) ;
- }
- }
经过调试发现该函数执行有问题,循环中后几个循环不能执行。原因就是CKEDITOR中的setData()方法是ajax异步的。
最终改写代码为:
- function insertSrc(srcArray){
- var oEditor = CKEDITOR.instances.articleContent;
- var editorData_old = oEditor.getData() ;
- var old_begin = editorData_old.substring(0,editorData_old.indexOf('</head>')) ;
- var old_end = editorData_old.substring(editorData_old.indexOf('</head>')) ;
- var insertData = '' ;
- for(var i=0;i<srcArray.length;i++)
- {
- insertData = insertData + srcArray[i] ;
- }
- var editorData_new =old_begin + insertData + old_end ;
- oEditor.setData(editorData_new) ;
- }
注:我们应该知道CKEditor中getData()方法是正常的方法,而setData()方法是异步方法。