Скопируйте и вставьте форматирование из web в TinyMCE

#tinymce

#tinymce

Вопрос:

Я работаю в TinyMCE. Я начинаю с того, что TinyMCE имеет шаблон из трех маркеров. Я хочу выделить некоторый текст из Интернета и вставить его в существующие маркеры в tinymce.

введите описание изображения здесь

Когда я копирую содержимое из Интернета, затем выделяю три маркера в Tinymce и вставляю, я получаю это: введите описание изображения здесь

У кого-нибудь есть решение для этого, используя любую из конфигураций инициализации? Это заставляет меня хотеть использовать другой инструмент, чем TinyMCE, только из-за этой проблемы.

РЕДАКТИРОВАТЬ: после некоторого копания я нашел решение. То, что происходило, было добавлено при вставке

теги, которые создали пробелы между маркерами 2-3 и 3-4. Вот что сработало для меня:

 tinymce.init({  
paste_preprocess: function(plugin, args) {
        var regex = /</?p[^>]*>/g;
        var rawcontent = args.content
        var replacedcontent = rawcontent.replace(regex, "");
        args.content = replacedcontent;
        console.log(replacedcontent);
  },
  

Это все еще не идеально, потому что при вставке Tinymce добавляет 4-ю маркерную точку. Я не уверен, как это сделать, но пока отмечаю это завершенным.

Комментарии:

1. Вопрос действительно сводится к тому, какой HTML у вас есть в TinyMCE, а затем, когда вы копируете содержимое «из Интернета» и вставляете его, какой HTML у вас есть в буфере обмена для обработки TinyMCE. Существует множество инструментов, которые покажут вам, что находится в буфере обмена, в зависимости от того, какую ОС вы используете, но я подозреваю, что происходит то, что вы вставляете список HTML в другой список HTML. Если вставляемый список имеет какие-либо встроенные стили, которые могут повлиять на его макет, но (потенциально) не на окружающие элементы списка.

2. @MichaelFromin Хорошо, спасибо, что указали мне правильное направление. Если я смогу удалить amp;nbsp при вставке содержимого в Tinymce, я буду в деле. Вы знаете, есть ли в init настройка для этого? Я думаю, что я все перепробовал и не могу понять.

3. Есть несколько причин, по которым TinyMCE вставляет amp;nbsp; — в частности, если у вас несколько пробелов подряд, он использует жесткие пробелы, чтобы сохранить этот интервал в такте, поскольку несколько обычных пробелов не поддерживаются в HTML. Нет настройки для прекращения использования amp;nbsp; , когда в содержимом содержится несколько пробелов. Если вы видите, что жесткие пробелы используются, когда они не нужны, это будет другая проблема.

4. Спасибо. Я нашел решение. При вставке добавлялись дополнительные теги <p> </p> . Чтобы исправить это, я добавил код для функции paste_preprocess, чтобы она удаляла теги абзацев из буфера обмена перед вставкой. Теперь это почти к моему удовлетворению. Единственное, что все еще сводит меня с ума, это то, что когда я вставляю свой веб-контент в Tinymce, как описано выше, он добавляет 4-й пустой маркер при вставке. Знаете ли вы, что это решается с помощью настройки инициализации?

Ответ №1:

После некоторого копания я нашел решение. Что происходило, так это то, что при вставке были добавлены теги, которые создавали пробелы между маркерами 2-3 и 3-4. Вот что сработало для меня:

 tinymce.init({  
paste_preprocess: function(plugin, args) {
        var regex = /</?p[^>]*>/g;
        var rawcontent = args.content
        var replacedcontent = rawcontent.replace(regex, "");
        args.content = replacedcontent;
        console.log(replacedcontent);
  },
  

Это все еще не идеально, потому что при вставке Tinymce добавляет 4-ю маркерную точку. Я не уверен, как решить эту проблему.