2012-05-23 12 views
8

Pracuję w aplikacji mvc i korzystam z wersji ckeditor 3.6.2. Użyłem następującego kodu do uzyskania wybranego html od ckeditor.Ckeditor wybrał html nie działa poprawnie z przeglądarką Chrome

CKEDITOR.editor.prototype.getSelectedHtml = function() { 

    if (CKEDITOR.env.ie) { 
     this.focus(); 
     selection = this.getSelection(); 
    } else { 
     selection = this.getSelection(); 
    } 
    if (selection) { 
     var bookmarks = selection.createBookmarks(), 
    range = selection.getRanges()[0], 
    fragment = range.clone().cloneContents(); 

     selection.selectBookmarks(bookmarks); 

     var retval = "", 
    childList = fragment.getChildren(), 
    childCount = childList.count(); 
     for (var i = 0; i < childCount; i++) { 
      var child = childList.getItem(i); 
      console.log(child); 
      retval += (child.getOuterHtml ? 
     child.getOuterHtml() : child.getText()); 
     } 
     return retval; 
    } 
}; 

Mam problem w przeglądarce Chrome, kiedy wybrany tekst i nazywają CKEDITOR.instances.editor1.getSelectedHtml().

Załóżmy na przykład, że w moim edytorze jest treść: < span style = "color: red;"> Welcome Note </span>. Jeśli wybiorę "Welcome Note" i zadzwonię getSelectedHtml() metoda firefox, safari, IE8 zwróci "Welcome Note" z tagiem span, ale chrome zwróci tylko tekst "Welcome Note". Jeśli próbuję zastąpić wybraną zawartość przy użyciu CKEDITOR.instances.editor1.insertHtml ("< div style =" font-size: 12px ">" + CKEDITOR.instances.editor1.getSelectedHtml() + "</div>"), w chrome straciłem kolor czcionki, ponieważ getSelectedHtml() zwraca tylko zaznaczony tekst. Ale działa to dobrze w przypadku innych przeglądarek.

Uwaga: Jeżeli zawartość jest "Welcome < rozpiętość style =" color: red; "> Uwaga </span>", a wybrane słowo "Welcome Note". W takim przypadku będzie to poprawne w Chrome i innych przeglądarkach.

Proszę zaproponować odpowiednie rozwiązanie.

Odpowiedz

Powiązane problemy