CKEditor:从粘贴的内容中删除样式属性

时间:2014-04-08 17:40:05

标签: javascript jquery html ckeditor

我正在尝试找出一种方法,将样式属性从粘贴的HTML内容中删除到CKEditor实例中。我使用以下内容完全删除了样式属性,但实际上我想保留margin-left属性。

CKEDITOR.on('instanceReady', function(ev) {
    ev.editor.on('paste', function(evt) {
        if (evt.data.type == 'html') {
            evt.data.dataValue = evt.data.dataValue.replace(/ style=".*?"/g, '');
         }
     }, null, null, 9);
});

问题是,有时边距左边只是切换到边距缩写,我不想要的额外数据被加到那里。

我正在研究jQuery和Javascript方法来尝试实现这一目标,但我还没有取得任何成功。

1 个答案:

答案 0 :(得分:0)

您可以将正确配置的允许内容过滤器应用于粘贴的数据。请参阅此答案,了解如何将其应用于字符串:Apply CKEditor Advanced Content Filter to a string

您可能遇到的唯一问题是您不能告诉ACF允许所有元素及其属性,您必须指定元素。所以过滤器可能如下所示:

var filter = new CKEDITOR.filter(
    'p h1 h2 h3 img strong em ul ol li[*](*){margin-left}'
);

它将允许所有属性和类,但只允许margin-left这些元素。


修改

有一种简单的方法可以列出所有元素:

var filter = new CKEDITOR.filter( {
    '$1': {
        // Use the hash containing all correct HTML elements
        // (plus some more things, but we can ignore them in this case).
        elements: CKEDITOR.dtd,
        attributes: true,
        classes: true,
        styles: 'margin-left'
    }
} );