如何在CKEditor 3中选择内容

时间:2011-10-24 12:37:24

标签: cross-browser ckeditor selection

我在CKEditor中修改选定的文本和图像时出现问题 - 这是我用来获取选择的代码,然后将其包装在链接中。顺便说一句,我是通过ckeditor上的对话框来完成的:

/* the base script for ckeditor selection actions, like inserting links/images */
(function(){
   var editor=editor||CKEDITOR.instances[parent.$('#WYSIWYGwrapper textarea').attr('id')];
   if(CKEDITOR.env.ie){CKEDITOR.dialog.getCurrent().hide();}
   var selection=editor.getSelection(),
   element=editor.document.createElement('a'),
   text="",
   ranges=selection.getRanges(),
   range={},
   isWebkitShouldExtract=false,
   clone={},
   ShouldExtractWebkit=function(nodes) {
      var nodelen=nodes.length,
      i=0;
      for(;i<nodelen;i+=1) {
         if(nodes[i].nodeName==="IMG") return true;
      }
      return false;
   };
   this.insertMode=true;
   element.setAttribute("href","www.google.com");
   element.setAttribute("target","main");
   if(CKEDITOR.env.ie){text=editor.document.$.selection.createRange().htmlText;element.setHtml(text);editor.insertElement(element);}
   else{
      if(ranges.length>0){
         range=ranges[0];
         clone=range.cloneContents();
         if(CKEDITOR.env.webkit){isWebkitShouldExtract=ShouldExtractWebkit(clone.$.childNodes);}
         element.append(clone);
         if(!CKEDITOR.env.webkit || isWebkitShouldExtract){range.extractContents();}
         editor.insertElement(element);
      }
   }

   if(!CKEDITOR.env.ie){CKEDITOR.dialog.getCurrent().hide();}
}());

总的来说,似乎我无法在WYSYWIG中选择html项目,然后在浏览器中一致地将它们包含在链接标记中。有没有人有完成这个的经验?

1 个答案:

答案 0 :(得分:0)

为了修复它,我使用了rangy,因为CKEditor的api还有很多不足之处

我在这里发了一篇关于它的博客文章http://allampersandall.blogspot.com/2011/11/ckeditor-selection-range.html