带标签的CKEditor自定义插件环绕选择

时间:2013-04-26 08:30:41

标签: javascript ckeditor

这看起来很简单,我想在选择之前添加<strike>并在选择之后添加/by User</strike> ..

这是我到目前为止所得到的:

CKEDITOR.plugins.add('test',
{
    init: function (editor) {
        editor.addCommand('inserttest',
            {
                exec: function (editor) {
                    var selection = editor.getSelection();
                    if (!selection) {
                        return;
                    }
                    var text = selection.getSelectedText();

                    editor.insertHtml('<strike>' + text + ' /By User </strike>');
                }
            });

        editor.ui.addButton('test',
            {
                label: 'Insert test',
                command: 'inserttest',
                icon: this.path + 'images/test.png'
            });
    }
});

这有点作用,但它有一些怪癖它删除了所有的HTML,而且它也没有验证我们是否已经不在罢工内..

那么如何在不丢失HTML的情况下做到这一点?并验证我不在攻击标签内?

我试图分析插件的源代码,但发现至少可以说是令人困惑......

注意我使用asp.net控件女巫似乎使用CKEditor的3.6.4版本。

1 个答案:

答案 0 :(得分:1)

我不知道你是否已经找到了答案,这个问题是实际的,但希望这个答案将来有助于发现这个错误。

而不是使用editor.insertHtml为您的警示码创建一个元素,并仅将该元素添加到编辑器中。

selection.getSelectedText().setData(''); // cleans the selection
var strikeElement= editor.document.createElement('strike');
strikeElement.setText(text + ' /By User');
editor.insertElement(strikeElement);