html - 如何强制 CKEditor 保留 <br> 标签

标签 html ckeditor

我在标准包中使用最新版本的 CKEditor(4.7 至今),我希望能够强制它保留换行符元素(<br>)。

我尝试使用以下配置,但没有成功:

CKEDITOR.replace('ck', {
    allowedContent: true,
    enterMode: CKEDITOR.ENTER_BR
});

如你所见in this jsfiddle ,当您打开源模式时,<br>标签已替换为 &nbsp; .

你是如何实现的?

最佳答案

在此 CKEditor ticket 上给出了解决方法(或至少是部分解决方法) ,这会强制 CKEditor 保留 <br>标签:

editor.on( 'pluginsLoaded', function( evt ){
    evt.editor.dataProcessor.dataFilter.addRules({
        elements :{
            br : function( element ) {          
                //if next element is BR or <!--cke_br_comment-->, ignore it.
                if( element && element.next && ( element.next.name == 'br' || element.next.value == 'cke_br_comment' ) ){
                    return;
                }else {
                    var comment = new CKEDITOR.htmlParser.comment( 'cke_br_comment' );
                    comment.insertAfter( element ); 
                }
            }
        }
    });

evt.editor.dataProcessor.htmlFilter.addRules({
    comment : function( value, node ) {
        if( value.indexOf('cke_br_comment') >= 0 ) {
            return false;
        }
    }
});

Updated fiddle here .

编辑:您可能还想查看我的 other answer根据您的需要,这可能会更好。

关于html - 如何强制 CKEditor 保留 <br> 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44501658/

相关文章:

css - 如何删除未显示 div 的填充

javascript - 如何设置和锁定CKEditor窗口大小?

java - 在 Linux 中的 SWT Java 应用程序中嵌入 CKEditor

javascript - 带 laravel 的 CKeditor 将数据库输出编码为原始 html

javascript - 如何忽略html表格中的事件

javascript - jQuery - 复选框正在计数,但单击全选复选框时不计数

html - 使用 HTML/CSS 限制句子长度

IE 中的 HTML 表单对齐问题

javascript - 在 Fancy Box 中运行 CKEditor : Editor popups/overlays focus behind fancybox overlay

javascript - 事件处理程序范围外的变量