首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >阻止CKEditor在源代码模式下格式化代码

阻止CKEditor在源代码模式下格式化代码
EN

Stack Overflow用户
提问于 2010-05-18 00:59:47
回答 5查看 23.9K关注 0票数 21

在CKEditor中以源模式查看时,如何防止自动格式化?

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

我偶然发现了一张CKEditor开发人员的票据,Preserve formatting of ProtectedSource elements,它暗示了一个可能曾经存在的设置,而这正是我想要的。我只想知道在源模式下编辑时如何完全关闭所有自动格式化。

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

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

我在CKEditor之外的浏览器中直接尝试了我的表达式,它是有效的,但是CKEditor没有像预期的那样保护代码(我怀疑这是一个涉及注释标记的错误,因为我可以让它与其他字符串一起工作)。如果你想知道,这就是我所希望的变通办法,但没有:

代码语言:javascript
运行
复制
config.protectedSource.push( /<!-- src -->[\s\S]*<!-- end src-->/gi );

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

代码语言:javascript
运行
复制
<!-- src -->
<div>some code that shouldn't be messed with (but is)</div>
<!-- end src -->

如果有人对这个场景有任何建议,或者知道我所描述的设置,或者甚至有人可以告诉我为什么我不能让protectedSource使用两个注释标签正常工作,我很想听听。

我真的认为这肯定是个bug,因为我可以让这么多其他表达式工作得很好,我甚至可以保护单个注释标记区域内的HTML,但我就是不能让两个不同注释标记内的HTML保持不变。

EN

回答 5

Stack Overflow用户

发布于 2011-06-11 22:47:49

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

对于您的语法来说,在PHP中应该是这样的。在将页面内容打印到文本区域之前:

代码语言:javascript
运行
复制
$content = str_replace(array('<!-- src -->','<!-- end src -->'),array('<protected>','</protected>'),$content);

在保存生成的内容之前:

代码语言:javascript
运行
复制
$content = str_replace(array('<protected>','</protected>'),array('<!-- src -->','<!-- end src -->'),$content);

在CKEditor配置中:

代码语言:javascript
运行
复制
protectedSource:[/<protected>[\s\S]*<\/protected>/g]

希望这能有所帮助!

票数 6
EN

Stack Overflow用户

发布于 2012-10-31 01:42:51

我希望在源代码中保留换行符,而protectedSource特性可以很好地实现这一点。我将此添加到我的config.js

代码语言:javascript
运行
复制
config.protectedSource = [/\r|\n/g];
票数 6
EN

Stack Overflow用户

发布于 2016-07-29 01:31:56

config.allowedContent=true;会做到这一点的

下面是完整的HTML代码

代码语言:javascript
运行
复制
<!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>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2851068

复制
相关文章

相似问题

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