ckeditor将选择转换为指定的标记

时间:2012-09-24 04:47:58

标签: javascript ckeditor

我只是按照引用在ckeditor / plugins中添加一个文件夹并将其命名为button-pre

这是源

(function(){
var a={
    exec:function(editor){
        var format={element:'pre'};
        var style=new CKEDITOR.style(format);
        style.apply(editor.document);
    }
}, 
b='button-pre';
CKEDITOR.plugins.add(b, {
    init:function(editor){
        editor.addCommand(b, a);
        editor.ui.addButton('button-pre', { 
            label:'Button PRE', 
            icon:this.path+'button-pre.png', 
            command:b
        });
    }
});
})();

这是我的问题

当我滚动鼠标选择几行并希望将其转换为标记PRE时,它总是转换所有文档。

我意识到它可能是由style.apply(editor.document)设置的。

所以我尝试了一些解决方法(对于ex style.apply(editor.getSelection()。getNative())

但我无法找到任何解决方案。它根本不起作用,请帮助!

1 个答案:

答案 0 :(得分:1)

这并不像看起来那么容易。请查看the source code of the div plugin,其中将选择内容包含在DIV元素中。这可能是你的灵感来源。但请注意,您需要在DOM黑客攻击方面有很多技巧才能避免像标记重叠这样的病态案例:

<p>First [paragraph</p><p>Second]^ paragraph</p>

上述内容无法转换为:

<p>First <pre>paragraph</p><p>Second</pre> paragraph</p>

因为这是一个错误的标记。

祝你好运,无论如何!