在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
使用两个注释标签正常工作,我很想听听。
我真的认为这肯定是个bug,因为我可以让这么多其他表达式工作得很好,我甚至可以保护单个注释标记区域内的HTML,但我就是不能让两个不同注释标记内的HTML保持不变。
发布于 2011-06-11 22:47:49
我的解决方案是在我的系统中使用注释,但在将页面内容提供给CKEditor之前,将它们转换为自定义的HTML标记。然后,在保存时,将它们转换回我的注释标签。
对于您的语法来说,在PHP中应该是这样的。在将页面内容打印到文本区域之前:
$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]
希望这能有所帮助!
发布于 2012-10-31 01:42:51
我希望在源代码中保留换行符,而protectedSource
特性可以很好地实现这一点。我将此添加到我的config.js
中
config.protectedSource = [/\r|\n/g];
发布于 2016-07-29 01:31:56
config.allowedContent=true;
会做到这一点的
下面是完整的HTML代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CKEditor</title>
<script src="http://cdn.ckeditor.com/4.5.10/standard/ckeditor.js"></script>
</head>
<body>
<textarea name="editor1"></textarea>
<script>
CKEDITOR.config.allowedContent=true;
CKEDITOR.replace( 'editor1' );
</script>
</body>
</html>
https://stackoverflow.com/questions/2851068
复制相似问题