Как выбрать контент в CKEditor 3 - PullRequest
0 голосов
/ 24 октября 2011

У меня проблемы с изменением выделенного текста и изображений в 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();}
}());

В целом, похоже, что я не могу выбрать элементы HTML в WYSYWIG, а затем последовательно оборачивать их в теги ссылок в разных браузерах.У кого-нибудь есть опыт выполнения этого?

1 Ответ

0 голосов
/ 12 ноября 2011

Чтобы исправить это, я использовал rangy, поскольку API CKEditor оставляет желать лучшего

Я сделал пост в блоге об этом здесь http://allampersandall.blogspot.com/2011/11/ckeditor-selection-range.html

...