Я пытаюсь выяснить способ удаления свойств стиля из вставляемого содержимого 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, чтобы попытаться выполнить это, но у меня пока не было успеха.
Вы можете применить правильно настроенный разрешенный фильтр содержимого к вставленным данным. См. Этот ответ, чтобы узнать, как применить его к строке: применить фильтр расширенного содержимого CKEditor к строке
Единственная проблема, которая может возникнуть в том, что вы не можете сказать 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'
}
} );