Как я могу остановить CKEditor, заменяя абзацы с двойным <br>при вставке из Word - PullRequest
3 голосов
/ 20 апреля 2011

Когда я использую Вставить из Word или Вставить как обычный текст опции в CKEditor двухстрочные возвраты преобразуются в двойные экземпляры
.

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

Возможно ли это с CKEditor?

Я использую Wygwam версию Pixel & Tonic CKEditor и вывод этот поток поддержки заключается в том, что это нельзя сделать так, как существует: (

Ответы [ 3 ]

4 голосов
/ 11 октября 2011

Поскольку я часами искал одну и ту же вещь и находил множество постов с просьбой, но ни одного ответа, я решил решить это самостоятельно.

Вот решение, надеюсь, оно сэкономит вам время, которое я потратил:

В config.js добавьте:

CKEDITOR.on('instanceReady', function (ev) {
    ev.editor.on('paste', function (ev) {
        ev.data.html = ev.data.html.replace(/<br>\s*<br>/g, '</p><p>');
    });
});
0 голосов
/ 17 июля 2018

Вот мой обходной путь для этого в CKEditor 4 (где ck - это экземпляр редактора):

        ck.on('afterPaste', function() {
            var data = ck.getData();
            data = data.replace(/<br \/>\s*<br \/>/g, '</p><p>');
            ck.setData(data);
        });
0 голосов
/ 24 апреля 2015

Что действительно действительно исправило эту проблему для меня:

  1. Поместите эту строку в config.js:
    "config.enterMode = CKEDITOR.ENTER_BR;"

Это создаст "br" вместо "p", когда вы нажмете ENTER в ckeditor.

Затем поместите этот скрипт туда, где вы замените


CKEDITOR.replace ('descripcion', {enterMode: CKEDITOR.ENTER_BR, shiftEnterMode: CKEDITOR.ENTER_BR});

                CKEDITOR.on( 'instanceReady', function( ev )
                {
                 ev.editor.dataProcessor.writer.setRules( 'br',
                 {
                  indent : false,
                  breakBeforeOpen : false,
                  breakAfterOpen : false,
                  breakBeforeClose : false,
                  breakAfterClose : false
                });
                });
             </script> 

Этот сценарий предотвратил двойное "br"

Надеюсь, это поможет.

...