Предотвратить замену TinyMCE на обычное пространство - PullRequest
1 голос
/ 15 апреля 2020

Редактор TinyMCE заменяет все   на обычные пробелы, когда начинает печатать. Я хочу предотвратить преобразование сущности html. Он преобразует сущности при каждом нажатии клавиши.

Я уже пробовал,

 entity_encoding: "named",
 entities: '160,nbsp,38,amp,60,lt,62,gt'

и

 entity_encoding: "named",
 entities: ' '

Есть ли что-нибудь еще, что можно сделать? Это моя инициализация TinyMCE,

tinymce.init({
        selector: selector,
        apply_source_formatting:true,
        entity_encoding: "named",
        entities: '160,nbsp,38,amp,60,lt,62,gt',
        force_p_newlines: force_p,
        forced_root_block: forced_root,
        valid_elements: "*[*]",
        invalid_elements: invalid_elms,
        valid_children: "+span[div],+th[input]",
        extended_valid_elements: "sc[id],dd[*],dt[*],monospace[*],input[*]", 
        custom_elements: "~sc,~monospace,~input",
        table_toolbar: "",
        menubar: false,
        save_enablewhendirty: false,
        toolbar1: toolbar_icons,
        plugins: [plugins_str],
        inline: true,
        formats: format_array_new,
        resize: true,
        toolbar_sticky: true,
        contextmenu: false,
        remove_script_host: false,

        skin_url: this._global.tinymceUrl + "/skins/ui/oxide",
        autofocus: true,
        fixed_toolbar_container: "#editor-toolbar",
        draggable_modal: true,
        paste_auto_cleanup_on_paste: true,
        paste_remove_spans: true,
        paste_remove_styles: true,
        paste_text_sticky: true,
        paste_strip_class_attributes: "all",
        paste_retain_style_properties: "",
        paste_as_text: true,
});

1 Ответ

0 голосов
/ 15 апреля 2020

TinyMCE будет (независимо от настроек конфигурации) использовать смесь жестких ( ) и обычных пробелов, когда обрабатывает контент, содержащий строку из нескольких пробелов любого вида.

Например, если вы наберете одну букву, пробел 5 раз, а затем еще одна буква TinyMCE будет выглядеть примерно так:

a     b

Это делается по нескольким причинам:

  1. Это позволяет людям вставлять пробелы в контент в соответствии с тем, что можно делать в текстовом процессоре
  2. Чередование жестких и обычных пробелов позволяет оборачивать контент внутри его содержимого. элемент. Длинная строка пробелов часто приводила к тому, что содержимое выходило за пределы содержащего его элемента, и автор типичного содержимого не понимал этого предложения или способа решения проблемы.

Когда сериализатор TinyMCE запускает это пространство Управление - это часть процесса, а не то, что вы можете отключить.

Что вы можете сделать, это обернуть жесткие пространства, которые вы не хотите изменять. Если вы загружаете плагин Nonbreaking Space TinyMCE, для этой возможности есть параметр конфигурации:

https://www.tiny.cloud/docs/plugins/nonbreaking/#nonbreaking_wrap

Поскольку он включен по умолчанию при загрузке Плагин Nonbreaking Space вы увидите, что если вы используете меню для Insert / Nonbreaking Space, вы получите что-то вроде этого:

<span class="mce-nbsp-wrap" contenteditable="false">&nbsp;</span>

Для этого нет "волхвов c", кроме промежутка с соответствующим учебный класс. Если вы оберните любое жесткое пространство, которое хотите сохранить таким образом, TinyMCE не будет изменять это пространство как часть процесса управления пространством.

...