首页 > 代码库 > ckeditor 敏感词标记显示处理方法
ckeditor 敏感词标记显示处理方法
直接在原型添加方法:
(function () { /* * 取消所有高亮 * noset =true 返回清理后的内容不刷新编辑器 * noset =false 或 不传返回清理后的内容 刷新编辑器 */ CKEDITOR.editor.prototype.CancleSensitiveWordsHighlight = function () { var regstrEpswh = ‘<span class="ep_ckeditor_sensitivewords" style="background-color:[^<>:]+[;]*">([^<>]+)<\\/span>‘; var htmlEpswh = this.getData(); htmlEpswh = htmlEpswh.replace(eval("/" + regstrEpswh + "/ig"), "$1"); if (this.document != null) this.document.getBody().setHtml(htmlEpswh); return htmlEpswh; } /* * epswhlwords 敏感词 * epswhligChar 敏感词中忽略的特殊字符 * epswhlcolor 高亮底色 */ CKEDITOR.editor.prototype.SensitiveWordsHighlight = function (epswhlwords, epswhligChar, epswhlcolor) { //空的字符串 if (typeof epswhlwords == "string" && !epswhlwords) return; //空数组 if (typeof epswhlwords == "object" && epswhlwords[0] == undefined) return; var htmlEpswh = this.getData(); //高亮模板 var highLighCOde = ‘<span class="ep_ckeditor_sensitivewords" style="background-color:{$color};">{$word}</span>‘; if (!epswhlcolor) epswhlcolor = "#ffff00"; highLighCOde = highLighCOde.replace("{$color}", epswhlcolor); //如果内容中有高亮内容先进行清理 if (htmlEpswh.indexOf(‘ep_ckeditor_sensitivewords‘) > -1) { htmlEpswh = this.CancleSensitiveWordsHighlight(); } //重新高亮 var epswhlkeyWords = []; if (typeof epswhlwords == "string") epswhlkeyWords = epswhlwords.split(‘,‘); else epswhlkeyWords = epswhlwords; //需要忽略的分隔符 if (epswhligChar && epswhligChar.length > 0) { epswhligChar = epswhligChar.replace(/[<>&"]/g, function (c) { return { ‘<‘: ‘<‘, ‘>‘: ‘>‘, ‘&‘: ‘&‘, ‘"‘: ‘"‘ }[c]; }); epswhligChar = "[" + epswhligChar + "]*"; } else { epswhligChar = ‘‘; } for (var i = 0; i < epswhlkeyWords.length; i++) { var allkey = epswhlkeyWords[i].split(‘‘); var regstr = allkey.join(epswhligChar); regstr = "(" + regstr + ")"; var reg = eval("/" + regstr + "/ig"); var hcode = highLighCOde.replace("{$word}", "$1"); htmlEpswh = htmlEpswh.replace(reg, hcode); } //document 对象在源码模式无效,this.setData是重新加载,不是同步方法,不能使用 if (this.document!=null) this.document.getBody().setHtml(htmlEpswh); } })();
或者添加插件:
CKEDITOR.plugins.add(‘sensitivewordshighlight‘, { init: function (editor) { /* * 取消所有高亮 */ editor.CancleSensitiveWordsHighlight=function () { var regstrEpswh = ‘<span class="ep_ckeditor_sensitivewords" style="background-color:[^<>:]+[;]*">([^<>]+)<\\/span>‘; var htmlEpswh = this.getData(); htmlEpswh = htmlEpswh.replace(eval("/" + regstrEpswh + "/ig"), "$1"); if (this.document != null) this.document.getBody().setHtml(htmlEpswh); return htmlEpswh; } /* * words 敏感词 * igChar 敏感词中忽略的特殊字符 * color 高亮底色 */ editor.SensitiveWordsHighlight = function (epswhlwords, epswhligChar, epswhlcolor) { //空的字符串 if (typeof epswhlwords == "string" && !epswhlwords) return; //空数组 if (typeof epswhlwords == "object" && epswhlwords[0] == undefined) return; var htmlEpswh = this.getData(); //高亮模板 var highLighCOde = ‘<span class="ep_ckeditor_sensitivewords" style="background-color:{$color};">{$word}</span>‘; if (!epswhlcolor) epswhlcolor = "#ffff00"; highLighCOde = highLighCOde.replace("{$color}", epswhlcolor); //如果内容中有高亮内容先进行清理 if (htmlEpswh.indexOf(‘ep_ckeditor_sensitivewords‘) > -1) { htmlEpswh = this.CancleSensitiveWordsHighlight(); } //重新高亮 var epswhlkeyWords = []; if (typeof epswhlwords == "string") epswhlkeyWords = epswhlwords.split(‘,‘); else epswhlkeyWords = epswhlwords; //需要忽略的分隔符 if (epswhligChar && epswhligChar.length > 0) { epswhligChar = epswhligChar.replace(/[<>&"]/g, function (c) { return { ‘<‘: ‘<‘, ‘>‘: ‘>‘, ‘&‘: ‘&‘, ‘"‘: ‘"‘ }[c]; }); epswhligChar = "[" + epswhligChar + "]*"; } else { epswhligChar = ‘‘; } for (var i = 0; i < epswhlkeyWords.length; i++) { var allkey = epswhlkeyWords[i].split(‘‘); var regstr = allkey.join(epswhligChar); regstr = "(" + regstr + ")"; var reg = eval("/" + regstr + "/ig"); var hcode = highLighCOde.replace("{$word}", "$1"); htmlEpswh = htmlEpswh.replace(reg, hcode); } //document 对象在源码模式无效,this.setData是重新加载,不是同步方法,不能使用 if (this.document != null) this.document.getBody().setHtml(htmlEpswh); } } });
启用插件:
config.extraPlugins = "sensitivewordshighlight";
调用:
//设置 CKEDITOR.instances.MYCKDEMO.SensitiveWordsHighlight(["一二","哈哈"], "`~!@#$^&*()=|{}‘:;‘,\\[\\]\\.<>/?~!@#¥……&*()—|{}【】‘;:”“‘。,、? ","#FFFF00"); //取消 CKEDITOR.instances.MYCKDEMO.CancleSensitiveWordsHighlight();
注意:ckeditor 中setData()方法要刷新iframe非同步方法,同时使用多次出现内容不按逻辑显示~,~
ckeditor 敏感词标记显示处理方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。