IamはMVCアプリケーションで動作し、ckeditor3.6.2バージョンを使用しています。ckeditorから選択したhtmlを取得するために次のコードを使用しました。
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;
}
};
テキストを選択してCKEDITOR.instances.editor1.getSelectedHtml()を呼び出すと、Chromeブラウザで問題が発生します。
たとえば、私のエディタにコンテンツ<spanstyle = "color:red;">ウェルカムノート</span>があるとします。「ウェルカムノート」を選択してgetSelectedHtml()メソッドを呼び出すと、firefox、safari、IE8はスパンタグ付きの「ウェルカムノート」を返しますが、chromeは「ウェルカムノート」というテキストのみを返します。IamがCKEDITOR.instances.editor1.insertHtml( "<div style ='font-size:12px'>" + CKEDITOR.instances.editor1.getSelectedHtml()+ "</ div>")を使用して選択したコンテンツを置き換えようとしている場合、クロムでは、getSelectedHtml()が選択されたテキストのみを返すため、フォントの色が失われました。ただし、これは他のブラウザでは正常に機能します。
注:コンテンツが「ようこそ<spanstyle = "color:red;">メモ</ span>」で、選択した単語が「ようこそメモ」の場合。この場合、これはchromeや他のブラウザで正しくなります。
適切な解決策を提案してください。