CKEditor在初始化后添加<p> </p>

时间:2016-12-21 13:58:46

标签: javascript angularjs ckeditor

我已经尝试过各种设置来摆脱这个问题,但到目前为止我还没有运气。我在我的角度(1.5.6)应用程序中运行CKEditor。首先我使用了这个angular directive,但在遇到这个问题之后,我尝试用尽可能少的东西运行CKEditor来找到原因。

Atm这就是我在控制器中的全部内容:

$scope.description = "<p>test</p><p>test</p>";
CKEDITOR.replace('description');
CKEDITOR.instances['description'].setData($scope.description);

在我看来:

<div id="description"></div>

初始化之后,这就是我在编辑器中的内容:

<p>test</p>

<p>test</p>

<p>&nbsp;</p>

每次加载CKEditor时,它都会添加这个空段落。现在,如果我保存这个,空段将保存到数据库。再次加载时,它将有2个空段落。

以下是我尝试解决此问题的设置列表。大多数情况下,我一个接一个地使用它们。

$scope.ckEditorOptions = {
    ignoreEmptyParagraph: false,
    enterMode: CKEDITOR.ENTER_BR,
    autoParagraph: false,
    fillEmptyBlocks: false,
    shiftEnterMode: CKEDITOR.ENTER_BR,
    basicEntities: false,
    tabSpaces: 0,
};

2 个答案:

答案 0 :(得分:0)

我对类似的问题感到困惑(对于DokuWiki使用CKGEdit而CKEditor在页面顶部和一些元素下面添加空段落)。 现在已将它添加到config.js的底部:

var ed = CKEDITOR.instances.wiki__text;
var t = ed.getData().replace(/<p>[\s*|&nbsp;]<\/p>/gm,'');
ed.setData(t, function() {
    this.checkDirty();
});

..这可能是在相同情况下对其他任何人有用的东西的基础。

在没有引入其他问题的情况下(例如,打破维基标记),所有编辑器选项都没有帮助。

答案 1 :(得分:0)

我使用的是 V4.16。每次我点击“保存”按钮时,它都会在文本的开头和结尾添加一个 p 标签和一个不间断空格。我使用配置文件完成了所有建议的操作,但没有运气。所以现在我使用 PHP 函数 str_replace() 来处理从编辑器到数据库的文本。不是很优雅,但很有用!