大家都用上了CKEDIT我还在fck,今天终于做好了粘贴HTML的时候fck过滤不安全代码的功能!(欢迎指正)

大概意思就是重写FCK的OnPaste方法
 
 

       //FCK会自动加载此函数        function FCKeditor_OnComplete(editorInstance) {            editorInstance.Events.AttachEvent('OnPaste', checkTextValue);        }        //检查输入框的情况        function checkTextValue(editorInstance) {

           var str = editorInstance.GetClipboardHTML();            var re = /<\w[^>]*(( class="?MsoNormal"?)|(="mso-))/gi;            if (re.test(str)) {                str = cleanWordString(str);            }            str = replacetags(str);            editorInstance.InsertHtml(str);            //editorInstance.SetHTML(replacetags(editorInstance.GetHTML()));                  }

       function replacetags(s) {            s = s.replace(/(\<|\s+)o([a-z]+\s?=)/gi, "$1$2");            s = s.replace(/(<[^>]+) class=[^ |^>]*([^>]*>)/gi, "$1.$2");            //s = s.replace(/(<[^>]+) style=[^ |^>]*([^>]*>)/gi, "$1.$2");            s = s.replace(/(script|frame|form|meta|behavior|style|a)([\s|:|>])+/gi, "$1.$2");            return s;        }

       function cleanWordString(html) {            html = html.replace(/ <.+?>/gm, ''); //过滤所遇html标签            html = html.replace(/<\s?img[^>]*>/gi, ''); //过滤img标签             html = html.replace(/<\/?SPAN[^>]*>/gi, ""); // 去掉所有span标签             html = html.replace(/&lt;+?/g, ""); //过滤&lt;            html = html.replace(/&gt;+?/g, ""); //过滤&gt;             html = html.replace(/&amp;+?/g, ""); //过滤&amp;            html = html.replace(/&nbsp;+?/g, ""); //过滤&nbsp;              html = html.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3"); // 过滤掉class属性              html = html.replace(/<(\w[^>]*) style="([^"]*)"([^>]*)/gi, "<$1$3"); // 过滤掉Style属性             html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3"); // 过滤掉Lang属性            html = html.replace(/<\\?\?xml[^>]*>/gi, ""); // 过滤掉XML元素和声明              html = html.replace(/<\/?\w+:[^>]*>/gi, ""); // 过滤XML命名空间声明的标签<o:p></o:p>              html = html.replace(/ /, ""); // Replace the              var re = new RegExp("(<P)([^>]*>.*?)(<\/P>)", "gi");            html = html.replace(re, "<div$2</div>"); // 把<P>转换为<DIV>            return html;

       }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值