9

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や他のブラウザで正しくなります。

適切な解決策を提案してください。

4

1 に答える 1

0

CKEDITOR Web サイトに文書化されているいくつかの同様のケースがあります。特に、これを見てください:

http://cksource.com/forums/viewtopic.php?f=11&t=20202

于 2012-05-25T15:14:30.243 に答える