当前位置: 首页 > 生活随笔 > 正文

1、从word里粘贴的时候总要弹出窗口再确定插入
2、从别的网站复制的内容包含杂乱的html格式,使内容错乱

经过查资料,找到了实现去除弹窗自动过滤word格式的办法:

FCK对IE浏览器的操作在这个文件中:fcKeditor/editor/js/fckeditorcode_ie.js。可以用编辑工具打开,其中代码非常多,第33行就是对word格式的检测。源代码中 if(FCKConfig.AutoDetectPasteFromWord&&A.length>0){var B=/<\w[^>]*(( class=”?MsoNormal”?)|(=”mso-))/gi;if (B.test(A)){……} 就是自动检测文字里是否包含word的标签,而我们的修改就是在就在最后一个大括号里添加代码。变量A就是粘贴板里的内容,B.test(A)就是检测是否是从Word粘贴过来的,我们用var D=A,然后在对D进行过滤, 最后把过滤后的数据插回到输入框,就是 result=this.InsertHtml(D);

具体的过滤代码FCK中也有非常好的例子,过滤代码可以在fcKeditor/editor/dialog/fck_paste.html中找到,在185行方法:function CleanWord( oNode, bIgnoreFont, bRemoveStyles ),第一个参数为要处理内容所在的对象,bIgnoreFont和bRemoveStyles 分别为是否清除Font和Style代码。

找到了清除的方法,我们可以复制这个方法到fcKeditor/editor/js/fckeditorcode_ie.js中,为了避免出错,可以把此方法原样不动的复制到fckeditorcode_ie.js的最上面,在做下小改动:

原方法第一句为:

var html = oNode.innerHTML ;

为获取要清除的内容

我们修改为:var html = oNode;

这样我们就可以直接传入要清除的内容了

又回到B.tset(A)后的大括号,里面全部代码删掉,如果有兴趣可以看一下,是弹出那个是否要清除格式的代码。大括号里内容可以这样写:

var D=CleanWord(A,true,true); result=this.InsertHtml(D); return false;

这样就完成了。

注意:CleanWord方法中大家仍可以自己设置是否清除Font和Style。

后面的return false;作用是停止粘贴,如果不中止这个操作,FCK中就会出现一个清除掉格式的内容和一个未清除格式的内容,呵呵,有兴趣可以试试。

根据上面的启示,我让粘贴时候就自动调用CleanWord方法,这样就可以清除很多从别的网页中粘贴的杂乱代码,排版整齐了很多
我的做法如下:
在fcKeditor/editor/js/fckeditorcode_ie.js中修改粘贴函数,找到var A=FCK._CheckIsPastingEnabled(true); 在后面添加
if (A){var D=CleanWord(A,true,true); result=this.InsertHtml(D);return false;};
这样普通粘贴就也调用CleanWord来清除格式,简单吧

转自:http://blog.sina.com.cn/s/blog_7b3f45490101euxf.html

fckeditor编辑器去除word粘贴弹窗和自动清除html格式:等您坐沙发呢!

发表评论

gravatar

快捷键:Ctrl+Enter