如何让CKEditor将script标签代码视为普通文本而非可执行代码?
CKEditor 中正常展示 script 代码片段的解决方法
方法1:修改CKEditor的过滤配置
找到CKEditor的配置文件(通常是config.js),添加或修改以下配置,让编辑器不对script相关内容进行解析和注释:
CKEDITOR.editorConfig = function( config ) { // 禁用自动过滤,允许所有内容(适合信任内容来源的场景) config.allowedContent = true; // 把script标签内容加入保护列表,视为纯文本 config.protectedSource.push( /<script[\s\S]*?<\/script>/g ); };
如果不想完全禁用过滤,可以更精确地允许pre和code标签:
CKEDITOR.editorConfig = function( config ) { config.extraAllowedContent = 'pre code; pre *[*]; code *[*]'; config.protectedSource.push( /<script[\s\S]*?<\/script>/g ); };
方法2:修正实体编码并确保内容正确
首先修正你之前的编码错误:原代码里的alert();>是错误的,正确的完全转义后的内容应该是:
<pre><code><script>alert();</script></code></pre>
保存和加载时确保这段编码后的内容不会被二次转义,后端存储时直接保存该文本,不要额外处理HTML实体。
方法3:使用Code Snippet插件
如果使用的是CKEditor 4或5,启用官方的Code Snippet插件:
- 该插件专门用于展示代码片段,会自动处理特殊字符,避免被编辑器过滤或解析
- 在编辑器中通过插件插入代码片段,选择「纯文本」或「JavaScript」语言,直接粘贴
<script>alert();</script>即可,插件会自动完成编码和安全展示
内容的提问来源于stack exchange,提问作者yikicon535
相关产品推荐
相关产品推荐

