fckeditor 的毛病

梁丘伟
2023-12-01

相信很多人都用过,并且喜欢用fckeditor,可是这个很棒的东西,往往给我们造成一些无法预知,也无法着手的问题,究其原因是自身的原因。

下面我写下自己遇到的一些毛病,以及修改方案。

1,fckedior中Ctrl+v,弹出ms word粘贴提示框。

解决方案,首先设置浏览器一般为IE7或者8,在工具—Internet选项—安全—自定义级别,将“允许对剪贴板进行编程访问”启用。

接下来,找到fckeditor文件夹以下路径的就是文件:fckeditor/editor/js/fckeditorcode_gecko.js 与fckeditor/editor/js/fckeditorcode_ie.js 你使用的是哪个文件就将其内部这句代码:PasteFromWord:function(){FCKDialog.OpenDialo('FCKDialog_Paste',FCKLang.PasteFromWord,'dialog/fck_paste.html',400,330,'Word');}
替换为 PasteFromWord:function(){FCK.InsertHtml( clipboardData.getData("Text") );}直接将剪贴板的内容插入fckeditor;
在将此句注释掉:FCKDialog.OpenDialog=function(A,B,C,D,E,F,G,H){var I={};I.Title=B;I.Page=C;I.Editor=window;I.CustomValue=F;var J=FCKConfig.BasePath+'fckdialog.html';this.Show(I,A,J,D,E,G,H);};即可。

2,fckeditor输入一个空格或者两个空格,获取fckeditor的内容为空"",当输入三个空格时,获取fckeditor的内容为<div>&nbsp;&nbsp;</div>。

解决方案,技术上没有找到原因,我们从业务上解决,就是我们无论你输入多少个空格都当做空内容去处理,不允许提交。也就是过滤获取的到的fckeditor的Html标签,得到输入的原始内容,再做判断。

附前台js对Html标签过滤以及获取fck内容代码:

 <script type="text/javascript">
         function PlainText(strHtml)
         {
            var aryReg = new Array("<(.[^>]*)>", "([/r/n])[/s]+", "&lt;","&gt;","&nbsp;");
            var aryRep = new Array("","","<", ">", "");
            for (var i = 0; i < aryReg.length;i++)
            {
               var regex = new RegExp(aryReg[i],"g");
               strHtml = strHtml.replace(regex, aryRep[i]);
           }
           return strHtml.replace(/^/s+|/s+$/g, "");
        }

//       debugger;
        var oEditer;
        function CustomValidate() {
            var value = oEditer.GetXHTML(true);
            var content = PlainText(value);
            if (content == '') {
           
                alert("回复的内容不能为空!");
                return false;
            }
            return true;
        }
        function FCKeditor_OnComplete(editorInstance) {
            oEditer = editorInstance;
        }

    </script>

说明:debugger;是用来调试的命令。

3,fckeditor 注册键盘事件,只能激活一次。或许是因为被放在updatePanel里面的原因。最终原因还没有找到。

解决方案:待续!

(有的朋友可以续上)

 类似资料: