关闭

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

1460人阅读 评论(0) 收藏 举报
大概意思就是重写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;

       }


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:36331次
    • 积分:715
    • 等级:
    • 排名:千里之外
    • 原创:14篇
    • 转载:12篇
    • 译文:0篇
    • 评论:19条
    最新评论