当从Word粘贴时,如何阻止CKEditor用双重替换段落

时间:2011-04-20 14:52:04

标签: parsing ckeditor wysiwyg copy-paste

当我在 CKEditor 中使用从Word粘贴粘贴为纯文本选项时,双行返回将转换为<< BR取代。

虽然这在技术上完全是源文件中存在的内容,但如果有一种方法可以在从外部文档粘贴时将所有双行返回转换为段落标记,那将是非常棒的。 TinyMCE似乎并不挣扎。

CKEditor可以实现吗?

我正在使用Pixel& Tonic的 Wygwam 版本的CKEditor和this support thread的推论是它不能以存在的方式完成:(

3 个答案:

答案 0 :(得分:4)

由于我花了好几个小时搜索同样的事情,发现很多帖子都在询问,但没有人回答我决定自己解决这个问题。

这是解决方案,希望它能节省你浪费的时间:

在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>');
    });
});

答案 1 :(得分:0)

真正为我解决这个问题的是:

  1. 将此行放在config.js中:
    “config.enterMode = CKEDITOR.ENTER_BR;”
  2. 当你在ckeditor中点击ENTER时,这将创建一个“br”而不是“p”。

    1. 然后将此脚本放在替换

      的位置


                          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> 
      
    2. 该脚本阻止了双重“br”

      希望它有所帮助。

答案 2 :(得分:0)

这是我在CKEditor 4(其中ck是编辑器实例)中的解决方法:

        ck.on('afterPaste', function() {
            var data = ck.getData();
            data = data.replace(/<br \/>\s*<br \/>/g, '</p><p>');
            ck.setData(data);
        });