我正在尝试找出一种方法,将样式属性从粘贴的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方法来尝试实现这一目标,但我还没有取得任何成功。
答案 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'
}
} );