如何防止ckeditor不添加&;nbsp;在空白html标记中

如何防止ckeditor不添加&;nbsp;在空白html标记中,html,visual-studio-2012,ckeditor,Html,Visual Studio 2012,Ckeditor,我已将Visual Studio 2012 Express安装在Windows 8.1操作系统中,并根据要求在项目中使用CKEditor 我对CKEditor还不熟悉,也不熟悉如何正确地使用它,但问题是在CKEditor的源代码中定义html,它会自动替换 <div><i class="classname"></i></div> 与 或 那么如何防止CKEditor不替换它并按原样保存呢? 我已经有了一些解决方案,但仍然有一点小错误,我正在

我已将Visual Studio 2012 Express安装在Windows 8.1操作系统中,并根据要求在项目中使用CKEditor

我对CKEditor还不熟悉,也不熟悉如何正确地使用它,但问题是在CKEditor的源代码中定义html,它会自动替换

<div><i class="classname"></i></div>

那么如何防止CKEditor不替换它并按原样保存呢? 我已经有了一些解决方案,但仍然有一点小错误,我正在更换

<i class="classname"></i>


但在标记之间,它会自动添加

如何防止它不添加

在下图中,CKEditor处于打开状态,您可以看到在圆形区域中,它会自动在我的代码中添加一些空格或制表符

如何阻止这种情况

看看这篇文章:

经过一些研究,我可能会对这个问题有所了解- 不幸的是,没有现成的解决方案

在CKEditor中,有四种方式可以产生无中断空间(有人知道更多吗?)

  • 。这可以在配置中禁用:

    config.fillEmptyBlocks = false;
    
    config.tabSpaces = 0;
    
    config.fillEmptyBlocks = false;
    
  • 。这可以在配置中禁用:

    config.fillEmptyBlocks = false;
    
    config.tabSpaces = 0;
    
    config.fillEmptyBlocks = false;
    
  • 将双空格转换为空格+NBSP。它可以被修复 服务器端或客户端javascript onunload。也许这个php是一个 开始:

  • 通过复制和粘贴。如果粘贴空格或双空格,则编辑器将自动将其转换。唯一的 我在这里看到的解决方案是如上所述使用正则表达式<代码> config.forcePasteAsPlainText=true没有帮助

  • 小结:为了去掉所有不间断的空格,你需要写一个 清除用户输入的附加功能

    非常感谢您的评论和进一步建议!(我正在使用ckeditor 3.6.4)

    编辑#1

    看看这个

    CKEDITOR.dtd.$removeEmpty.i= 0;
    
    您还可以将其与span和其他标记一起使用

    停止删除CKEditor中的任何空标记

    有一个定义的标签列表,如果 空(请参阅dtd.js和$removempty或运行CKEDITOR.dtd.$removempty 从控制台)

    • 从HTmL
    要确保未删除某些空标记,请添加属性 “数据cke生存”:

    <span data-cke-survive="true" ></span>
    
    通过在CKEDITOR.dtd.$removempty中将元素设置为0,它将 防止CKEditor删除空标记


    此主题非常有用

    简而言之,您可以在配置中禁用空块的自动填充:

    config.fillEmptyBlocks = false;
    
    config.tabSpaces = 0;
    
    config.fillEmptyBlocks = false;
    
    更多资料-

    UPD

    你可以试试这个
    config.protectedSource.push(/]*>/g)

    {Array}CKEDITOR.config.protectedSource自:3.0

    要在输入HTML上执行的正则表达式列表,指示HTML源代码,当匹配时,在所见即所得模式下不能用于编辑

    config.protectedSource.push(//g);//PHP代码

    config.protectedSource.push(//g);//ASP代码

    config.protectedSource.push(/(]+>[\s |\s]*?]+>)|(]+/>)/gi);//ASP.Net代码

    UPD 2

    希望这会有所帮助

    CKEDITOR.on('instancerady',函数(ev)
    {
    //关闭blockquote标记的html输出格式中多余的换行符。
    //同样,您可以更正任何标记输出格式设置
    ev.editor.dataProcessor.writer.setRules('blockquote',
    {
    缩进:假,
    在打开之前先打开:错误,
    breakAfterOpen:false,
    breakBeforeClose:false,
    breakAfterClose:对
    });
    
    });

    <script>
      var options = {
        fillEmptyBlocks: false,
      };
    
      CKEDITOR.replace( 'content', options);
    </script>    
    
    
    变量选项={
    fillEmptyBlocks:false,
    };
    CKEDITOR.replace('content',选项);
    
    否,当我开始写作时,顶部的答案不存在。抱歉,如果这看起来像robbery@MamikonArakelyan我试过了,但在代码中没有效果。它用空白覆盖它。@ PADHIYAR尝试这个“代码> CONFIG.Puto CeDelase.Pube(//*> /G);<代码>在您的config@MamikonArakelyan哇,很好,现在它正在工作,但它是如何工作的,你能简单地告诉我,请@padhiyar此选项将元素添加到数组中,编辑器不应触摸这些元素。他们正在设置正则表达式,尝试了你的解决方案,但没有得到结果,它仍然用空白代替。我已经更新了这个问题,请仔细检查。是的,它现在正在运行,但是对于每个html标记,像我一样,我必须把这行!嗨,凯马特曼,还有一个问题出现在“一些报价来了”中,它在报价前后添加了“所以它在我的页面中占用了一些空间。”。如何删除此项?请尝试“config.entities=false”;哦,Mamikon Arakelyan的速度更快。