如何阻止Django后台CKEditor移除Adsense的<ins>标签?
解决CKEditor移除Google Adsense标签的问题
一、修正Django配置(优先推荐)
django-ckeditor的配置优先级高于单独的config.js,直接在settings.py的CKEDITOR_CONFIGS中补充规则,确保标签不被过滤:
CKEDITOR_CONFIGS = { 'default': { 'allowedContent': True, # 保护<ins>标签不被编辑器修改或移除 'protectedSource': [ r'<ins[\s\S]+?<\/ins>', ], # 明确允许<ins>标签的所有类、属性和子内容 'extraAllowedContent': 'ins(*)[*];', }, }
修改后重启Django服务,再测试插入Adsense代码。
二、让config.js生效的配置(若坚持使用config.js)
如果要使用单独的config.js,需确保django-ckeditor能正确加载它:
- 将
config.js放在Django项目的静态文件目录下,比如static/ckeditor/ckeditor/config.js - 在
settings.py中指定CKEditor的静态文件路径:
CKEDITOR_BASEPATH = '/static/ckeditor/ckeditor/'
同时修正config.js的正则表达式(JS中无需转义HTML实体):
CKEDITOR.editorConfig = function( config ) { config.protectedSource.push( /<ins[\s\S]+?<\/ins>/g ); config.extraAllowedContent = 'ins(*)[*];'; };
确认CKEditor的
config.js是否生效的方法 - 控制台验证法:打开浏览器开发者工具(F12)的Console面板,输入
CKEDITOR.config回车,查看输出的配置对象中是否包含你在config.js里设置的项(比如设置了config.uiColor = '#AADC6E',就检查uiColor的值)。 - 可视化验证法:在
config.js中添加一个明显的配置,比如config.language = 'fr',保存后刷新页面,若编辑器界面变为法语,说明config.js已生效。 - 网络请求验证法:在开发者工具的Network面板中刷新页面,查找名为
config.js的请求,确认其状态为200,且响应内容是你修改后的代码。
内容的提问来源于stack exchange,提问作者kingx26
相关产品推荐
相关产品推荐

