TinyMCE: копирование и вставка из одного редактора в другой - PullRequest
2 голосов
/ 03 декабря 2011

При работе с TinyMCE я обнаружил, что выполняются следующие шаги:

  1. Выберите все содержимое в редакторе TinyMCE
  2. Command-X (или control-X, если вы ПК)
  3. Вставить в тот же редактор

Результатом является ваш оригинальный контент, заключенный в DIV с любыми стилями, которые применяются к телу content_css, примененному к div, и вашему контенту, заключенному в него. Чтобы быть более понятным, если вы начинаете с:

<p>Content!</p>

и имеют content_css : 'content.css', содержащее:

body { padding: 20px; }

когда вы вставляете, вы получаете

<div style='padding: 20px;'>
<p>Content!</p>
</div>

Если вы вырезаете новый контент и вставляете его снова, теперь у вас есть двойная упаковка. Есть ли способ легко предотвратить с помощью tinyMCE такое поведение? Я удалил пользовательский идентификатор, присвоенный телу редактора, так что теперь он просто использует стили для тега BODY моего css.

Я пытался написать пользовательскую таблицу стилей, которая не накладывает никаких правил на сам основной селектор #tinyMCE, но я все еще упаковываю свое содержимое в общий DIV с некоторыми правилами по умолчанию при выполнении копирования / вставки.

Есть ли способ избежать этого?

Если это полезно для экспертов TinyMCE, мой вызов инициализации довольно прост:

tinyMCE.init({
        // General options
        mode            : "specific_textareas",
        editor_selector : "enableMCE",
        theme           : "advanced",
        skin            : "o2k7",
        skin_variant    : "silver",
        plugins         : "table",
        inline_styles   : false,
        theme_advanced_blockformats         : '',
        theme_advanced_toolbar_location     : "top",
        theme_advanced_buttons1             : "bold,italic,bullist,numlist,|,styleselect,|,indent,outdent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,table,visualaid,|,removeformat",
        theme_advanced_buttons2             : "",
        theme_advanced_toolbar_align        : "left",        
        content_css     : '/assets/admin/css/events-editor.css',
        rows: 100,
        // Style formats
        style_formats : [
          { title : 'Headline', block : 'h2' },
          { title : 'Subhead', block : 'h3' },
          { title : 'Minor Head', block : 'h4' },
          { title : 'Paragraph', block : 'p' }
        ]
});

Ответы [ 2 ]

1 голос
/ 05 декабря 2011

Проблема здесь будет в том, что tinymce не может решить, откуда происходит вставленное контекстное содержимое и оборачивает его по умолчанию. Вы должны будете изменить вставленный контент самостоятельно, используя параметр инициализации tinymce paste_preprocess . Используя этот параметр, вы можете проверить собственный флаг, если вставленный контент поступил из экземпляра редактора или из него, и при необходимости вырежьте ненужные теги.

0 голосов
/ 14 февраля 2015

В качестве альтернативы вы также можете использовать опцию invalid_elements.В частности, если ваша запись в основном касается текста или изображений, вы, вероятно, можете запретить все теги div html в скопированном тексте.

Чтобы добиться этого, я просто добавил это в свою конфигурацию TinyMCE:

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