Lev*_*Lev 20 html formatting wysiwyg ckeditor
在源模式下查看时,如何在CKEditor中阻止任何自动格式化?
我喜欢直接编辑HTML源代码而不是使用WYSIWYG接口,但每当我编写新行或布局标签时我会如何缩进它们,当我切换到WYSIWYG模式然后再次返回源模式时,它都会被格式化.
我偶然发现了一张CKEditor开发票,保留了ProtectedSource元素的格式,这提到了一个曾经存在过一次的设置,这正是我所追求的.我只想知道在源模式下编辑时如何完全关闭所有自动格式化.
我提出了一个我认为万无一失的解决方案(虽然不是一个令人愉快的解决方案).
我了解了protectedSource设置,所以我想,也许我可以使用它并在我的所有HTML之前创建一个HTML注释标记,然后在它之后创建一个HTML注释标记然后推送一个正则表达式,将注释标记添加到protectedSource数组中,但即便如此(相信它或不)工作不起作用.
我已经在CKEditor之外的浏览器中直接尝试了我的表达并且它正在工作,但是CKEditor没有按预期保护代码(我怀疑这是一个涉及注释标记的错误,因为我可以让它与其他字符串一起使用).万一你想知道,这是我希望可以解决的问题,但不是:
config.protectedSource.push( /<!-- src -->[\s\S]*<!-- end src-->/gi );
Run Code Online (Sandbox Code Playgroud)
而我计划做的事情(因为似乎缺少一种在源模式下禁用格式化的设置)是将我的所有HTML嵌套在注释标签中,如下所示:
<!-- src -->
<div>some code that shouldn't be messed with (but is)</div>
<!-- end src -->
Run Code Online (Sandbox Code Playgroud)
我很想知道是否有人对这种情况有任何建议,或者知道我所描述的设置,或者即使有人可以告诉我为什么我无法protectedSource使用两个评论标签正常工作.
我真的认为它必须是一个bug,因为我可以让很多其他表达式工作正常,我甚至可以在单个注释标记区域内保护HTML,但我无法在两个不同的注释标记中获取HTML以保持不变.
我的解决方案是在我的系统中使用注释,但在将页面内容提供给CKEditor之前,将它们转换为自定义HTML标记.然后,保存后,将它们转换回我的评论标签.
对于你的语法,在PHP中会是这样的.在将页面内容打印到textarea之前:
$content = str_replace(array('<!-- src -->','<!-- end src -->'),array('<protected>','</protected>'),$content);
Run Code Online (Sandbox Code Playgroud)
在保存结果内容之前:
$content = str_replace(array('<protected>','</protected>'),array('<!-- src -->','<!-- end src -->'),$content);
Run Code Online (Sandbox Code Playgroud)
在CKEditor配置中:
protectedSource:[/<protected>[\s\S]*<\/protected>/g]
Run Code Online (Sandbox Code Playgroud)
希望有所帮助!
小智 5
我想在源代码中保留换行符,因此该protectedSource功能很好用。我将此添加到我的config.js:
config.protectedSource = [/\r|\n/g];
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)