настройка CKEditor pasteFilter для удаления определенных встроенных стилей - PullRequest
0 голосов
/ 27 марта 2019

Мои заинтересованные стороны используют CKEditor версии 4.10.1 в Drupal (8.6.13).

У них есть сценарий использования, при котором они часто копируют из Документов Google и вставляют в текстовое поле WYSIWYG.Google использует встроенные свойства CSS.Вот пример:

<span style="font-size:36pt;font-family:Merriweather;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;">Your Name</span></p>

Им часто приходится менять размеры текста, а также шрифта лица.В приведенном выше примере это font-size:36pt;font-family:Merriweather; в теге style.

Я смотрю директиву конфигурации pasteFilter .В этом примере они показывают, как фильтровать определенные теги и теги с определенными атрибутами:

config.pasteFilter = 'h1 h2 p ul ol li; img[!src, alt]; a[!href]';

Однако я хочу удалить только определенные стили CSS.Например, если ввод пасты

 <span style="font-size:36pt;font-family:Merriweather;vertical-align:baseline;">Hello</span>

, тогда я хочу, чтобы источник читал

 <span style="vertical-align:baseline;">Hello</span>

Т.е. удаляются только font-size:36pt;font-family:Merriweather;.(И я хочу удалить все спецификации font-size и font-family.)

Возможно ли это с pasteFilter?Если да, то как мне это выразить?

Изменить Решения белого списка не соответствуют нашим критериям приемлемости, потому что мои заинтересованные стороны хотят сохранить другие директивы, такие как жирный шрифт, курсив и т. Д. Мыне хочу удалять все стиль или весь тег span;мы только хотим удалить font-size и font-family.

1 Ответ

1 голос
/ 30 марта 2019

Согласно Как разрешить все, кроме… , вы можете использовать:

config.allowedContent = {
    $1: {
        // Use the ability to specify elements as an object.
        elements: CKEDITOR.dtd,
        attributes: true,
        styles: true,
        classes: true
    }
};
config.disallowedContent = '*{font*}';
// if you want to be more specific: config.disallowedContent = 'span{font-size,font-family}';

Я проверил это, и оно работает, убедитесь сами в этом JSFiddle Я создал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...