大概意思就是重写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(/<+?/g, ""); //过滤<
html = html.replace(/>+?/g, ""); //过滤>
html = html.replace(/&+?/g, ""); //过滤&
html = html.replace(/ +?/g, ""); //过滤
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;
}