如何防止CKEditor在源代码模式下格式化代码?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (132)

你怎么能防止任何时候在源代码模式下查看时CKEditor的自动格式化?

我喜欢直接编辑HTML源代码,而不是使用所见即所得界面,但是每当我编写新行或布局标记时,我会缩进它们,当我切换到所见即所得模式并再次返回到源模式时,它们都会被格式化。

我偶然发现了一个CKEditor的开发票,保存了ProtectedSource元素的格式,这暗示了一个可能曾经存在过的设置,这正是我所追求的。我只想知道如何在源模式下编辑时完全关闭所有自动格式化。

我想出了一个我认为是万无一失的解决方案(虽然不是一个愉快的解决方案)。

我了解了这个protectedSource设置,所以我想,也许我可以使用它,然后在我的所有HTML之前创建一个HTML注释标记,然后将正则表达式查找注释标记到protectedSource数组中,但即使这样(相信它或不)不起作用。

我已经在CKEditor之外的浏览器中尝试了我的表达式,并且它正在工作,但是CKEditor并没有像预期的那样保护代码(我怀疑这是一个涉及评论标记的错误,因为我可以让它与其他字符串一起工作)。如果你想知道,这是我希望能够解决的方法,但不是:

config.protectedSource.push( /<!-- src -->[\s\S]*<!-- end src-->/gi );

以及我计划要做的事情(似乎缺少禁用源模式中格式设置的设置)是将所有的HTML嵌套在注释标记中,如下所示:

<!-- src -->
<div>some code that shouldn't be messed with (but is)</div>
<!-- end src -->

我很想听听有没有人对这种情况有任何建议,或者知道我所描述的一种设置,或者即使有人可以让我protectedSource满意,为什么我无法用两个评论标签正常工作。

我真的认为这应该是一个错误,因为我可以让很多其他表达式正常工作,甚至可以保护单个注释标记区域内的HTML,但我无法在两个不同的注释标记中获取HTML以保持原样。

提问于
用户回答回答于

我想在我的源代码中保留新行,并且功能在这方面很有效。我把这个加到我的:

config.protectedSource = [/\r|\n/g];
用户回答回答于

我的解决方案是在我的系统中使用注释,但在将页面内容提供给CKEditor之前,将它们转换为自定义HTML标记。然后,保存后,将它们转换回我的评论标签。

在PHP中,你的语法就像这样。在将页面内容打印到textarea之前:

$content = str_replace(array('<!-- src -->','<!-- end src -->'),array('<protected>','</protected>'),$content);

在保存结果内容之前:

$content = str_replace(array('<protected>','</protected>'),array('<!-- src -->','<!-- end src -->'),$content);

在CKEditor配置中:

protectedSource:[/<protected>[\s\S]*<\/protected>/g]

希望有所帮助!

扫码关注云+社区