在CKEditor的先前版本(3.5)中,我能够输入:
<br style="page-break-after: always;" />
但是,在升级到4.4.5之后,我注意到RTE不再显示来自Database列的这个HTML源代码,因此如果在其上重新保存带有此RTE的表单,则NULL将保存回数据库。似乎CKEditor出于某种原因剥离了这个HTML。
我该如何防止这种情况?
非常感谢。
编辑1
发现这个要添加到config.js:
config.allowedContent = 'br {page-break-after}';
但不起作用,虽然它应该...... [/ p>
编辑2
编辑3
我可以尝试在HTML源视图中输入上面的HTML,但如果我切换HTML Source按钮,然后返回Source View,它现在就消失了。所以CKEditor出于某种原因剥离了这个HTML。
编辑4
删除现在无关紧要
编辑5
查看浏览器源我看到:
<textarea class="RuleRTE" cols="20" id="myCk" rows="2"><br style="page-break-after: always;" /> </textarea>
很明显,数据存在并被检索,但是转换后会阻止我在HTML源视图中看到它。
我现在发现这与&lt; p&gt; test&lt; / p&gt;无关。测试很好并且它也被转换,我想要防止它像页面中的普通HTML一样呈现。所以似乎CKEditor不喜欢这个标签???
编辑6:
删除现在与问题无关。
编辑7:
Debug JS:
<script type="text/javascript" language="javascript">
var editor = CKEDITOR.replace('Content', {
allowedContent: 'br[*]'
});
editor.on('instanceReady', function () {
console.log(editor.filter.allowedContent);
});
结果似乎表明allowedContent工作正常,但BR元素仍然不可见。
[Object, Object]
0: Object attributes: true
classes: null
elements: Object br: true
答案 0 :(得分:1)
我怀疑您尝试修改allowedContent设置的方式存在语法或用法错误。尝试按照这些方式做一些更简单的事情:(在代码而不是配置文件中执行)
var your_ck_editor = CKEDITOR.replace( 'your_ck_element_id', {
allowedContent: 'br[*]'
} );
br[*]
设置应允许包含任何属性的任何<br />
元素。
出于问题排查目的,请尝试以下操作:
console.log( your_ck_editor.filter.allowedContent );
如果此代码不适合您,请发布您用于设置CKEditor的所有代码以及console.log调用的输出。