html - 防止CKEditor在源代码模式下格式化代码

标签 html formatting ckeditor wysiwyg

在源代码模式下查看 CKEditor 时如何防止任何自动格式化?

我喜欢直接编辑 HTML 源代码,而不是使用 WYSIWYG 界面,但是每当我编写新行或布局标签时,我将如何缩进它们,当我切换到 WYSIWYG 模式然后返回源模式时,所有这些都会被格式化再次。

我偶然发现了一张 CKEditor 开发票,Preserve formatting of ProtectedSource elements ,这暗示了一个可能曾经存在过的场景,而这正是我所追求的。我只想知道在源代码模式下编辑时如何完全关闭所有自动格式化。

我想出了一个我认为万无一失的解决方案(尽管不是一个令人愉快的解决方案)。

我了解了 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保持不变。

最佳答案

我的解决方案是在我的系统中使用注释,但在将页面内容提供给 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]

希望有帮助!

关于html - 防止CKEditor在源代码模式下格式化代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2851068/

相关文章:

javascript - 如何格式化 HTML &lt;textarea&gt; 中的文本?

regex - VSCode : TextMate Regex in User Settings

ckeditor - 在asp.net core mvc中集成ckeditor

html - 在精确的中心实现位置粘性内容?

javascript - 幻灯片图像更改时如何更改标题字体和导航链接颜色

javascript - javascript 中的 ASP.NET Core ViewData 访问

html - 如何摆脱文本叠加底部的随机像素

python - 无法使用列表格式化字符串

drupal - 最广泛使用的 Drupal 富文本编辑器插件?

javascript - ckeditor - 文件重命名问题