0

CKEditorでサイドバープラグインを作成したい。太字と斜体のタグが付いたテキストを選択すると、コンテンツを抽出するよりもそのタグをスキップして、テキストだけを返します。すべてのタグを含むすべての選択したテキストが必要です。

これは私のコードです:

function sidebar(editor){
    var selection = editor.getSelection();
    if (selection.getSelectedText() != "") {

        var ranges = selection.getRanges();
        var pNode = editor.document.createElement('p');
        var extractedContent = ranges[0].extractContents();
        pNode.append(extractedContent);
        var customNode = editor.document.createElement('cdl:sidebar');
        customNode.append(pNode);
        var sidebarHolder = editor.document.createElement("sidebarholder");
        sidebarHolder.append(customNode);
        var nodeHtml = sidebarHolder.getHtml();
        selection.selectRanges(ranges);
        editor.insertHtml(nodeHtml);
    }
    else {
        showErrorMessage("Selection is not proper");
    }
}
4

1 に答える 1

1

ckeditorwalkを使用して複数選択のテキストを取得できます。

// Walker searching for guardElements.
                    var walker = new CKEDITOR.dom.walker( range );

                    var start = bookmarks[ i ].startNode,
                        end = bookmarks[ i++ ].endNode;

                    walker.evaluator = function( node )
                    {
                        return !! ( node.type == CKEDITOR.NODE_ELEMENT
                                && node.getName() in guardElements
                                && !( node.getName() == ( enterMode == CKEDITOR.ENTER_P ? 'p' : 'div' )
                                    && node.getParent().type == CKEDITOR.NODE_ELEMENT
                                    && node.getParent().getName() == 'blockquote' )
                                // Element must be fully included in the range as well. (#6485).
                                && node.getPosition( start ) & CKEDITOR.POSITION_FOLLOWING
                                && ( ( node.getPosition( end ) & CKEDITOR.POSITION_PRECEDING + CKEDITOR.POSITION_CONTAINS ) == CKEDITOR.POSITION_PRECEDING ) );
                    };

walker.jshttp : //docs.cksource.com/ckeditor_api/symbols/src/core_dom_walker.js.htmlを使用します

于 2012-12-19T11:11:50.770 に答える