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.