首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何防止ckeditor在空html标记中不添加 

如何防止ckeditor在空html标记中不添加 
EN

Stack Overflow用户
提问于 2015-10-16 06:59:42
回答 3查看 7.4K关注 0票数 11

我在Windows8.1OS中安装了VisualStudio2012Express,并根据需要在我的项目中使用CKEditor。

我是CKEditor的新手,也以适当的方式使用它,但问题是在CKEditor源代码中定义html,它会自动替换。

代码语言:javascript
运行
复制
<div><i class="classname"></i></div>

使用

代码语言:javascript
运行
复制
<div>&nbsp;</div> or <div></div>

那么,如何防止CKEditor不替换它并保存它呢?我已经找到了一些解决办法,但仍然有一些小错误。

代码语言:javascript
运行
复制
<i class="classname"></i>

使用

代码语言:javascript
运行
复制
<div class="classname"></div>

但是在标签之间它会自动添加标记。

如何防止它不添加

在下面的图片中,CKEditor是打开的,您可以看到在圆角区域,它会自动在我的代码中添加一些空间或选项卡。

怎样才能阻止这一切?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-23 12:35:12

看看这篇文章:人物

经过一些研究,我可能会澄清这个问题--不幸的是,没有现成的解决方案。 在CKEditor中有四种不间断空间可以发生(谁知道更多?):

  1. 空块自动充填。这可以在配置中禁用: config.fillEmptyBlocks = false;
  2. 按TAB键时自动插入。这可以在配置中打开: config.tabSpaces = 0;
  3. 将双空格转换为SPACE+NBSP。这是一种浏览器行为,因此不会由CKEditor团队修复。。它可以是固定的服务器端,也可以是客户端javascript卸载。也许这个php是一个开始: Preg_replace(‘/\s\s\s/i ',’‘,$text);
  4. 通过复制和粘贴。如果粘贴UTF-8无间断空间或双空格,CKEditor将自动转换它。我在这里看到的唯一解决方案是像上面这样做正则表达式。config.forcePasteAsPlainText = true;帮不上忙。

摘要:要摆脱所有没有中断的空间,您需要编写一个额外的函数来清理用户输入。

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

编辑#1

看看这个。

代码语言:javascript
运行
复制
CKEDITOR.dtd.$removeEmpty.i= 0;

您也可以将其与span和其他标记一起使用。

关于这个的文件。

停止删除CKEditor中的任何空标记 有一个定义好的标签列表,如果为空将被删除(请参见dtd.js和$removeEmpty,或者从控制台运行CKEDITOR.dtd.$removeEmpty )。

  • 来自HTmL

为了确保某些空标签没有被删除,添加属性‘data-cke-survive’:

  • 从配置

或者您可以配置特定的标记,不移除:

如果(window.CKEDITOR){ CKEDITOR.on('instanceCreated‘),函数(ev) {CKEDITor.dtd.$removeEmpty’‘span’= 0;CKEDITor.dtd.$CKEDITOR.on‘CKEDITOR.on’‘TAG NAME’= 0;}}

通过将CKEDITOR.dtd.$removeEmpty中的元素设置为0,可以防止CKEditor删除空标记。

http://margotskapacs.com/

票数 8
EN

Stack Overflow用户

发布于 2016-02-23 12:36:45

这个主题可以帮助https://stackoverflow.com/

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

代码语言:javascript
运行
复制
config.fillEmptyBlocks = false;

更多信息- 这里

UPD。

你可以试试这个config.protectedSource.push(/<i[^>]*><\/i>/g);

来自正式文件

{Array}自: 3.0以来的CKEDITOR.config.protectedSource 在输入HTML上执行的正则表达式列表,指示匹配时不能在WYSIWYG模式下进行编辑的HTML源代码。 config.protectedSource.push( /<\s*?\?>/g );// PHP代码 config.protectedSource.push( /<%\s*?>/g );// ASP代码 config.protectedSource.push( /()+>\s区\s\s*?+>)x(]+/>/gi );// ASP.Net代码

UPD 2

希望这能帮上忙。

代码语言:javascript
运行
复制
CKEDITOR.on( 'instanceReady', function( ev )
{
// turn off excess line breaks in html output formatting for blockquote tag.
// In same way you can correct any tag output formating

ev.editor.dataProcessor.writer.setRules( 'blockquote',
{
  indent : false,
  breakBeforeOpen : false,
  breakAfterOpen : false,
  breakBeforeClose : false,
  breakAfterClose : true
});
});

票数 1
EN

Stack Overflow用户

发布于 2019-09-24 05:57:12

对于使用UniSharp/laravel-ckeditor的人来说

代码语言:javascript
运行
复制
<script>
  var options = {
    fillEmptyBlocks: false,
  };

  CKEDITOR.replace( 'content', options);
</script>    
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33164316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档