关于FCKEditor编辑的区域选中问题

最近在做一个整合FCKEditor编辑器的项目,其中有一个功能就是查找编辑器中的特定的字符串,并选中
查了好多资料,最后找到了同时可以在IE下和FF下的解决方案
现在贴上来于大家分享,希望以后大家可以少走弯路

        function SelectLabel(label){
                var oEditor = FCKeditorAPI.GetInstance('fckcontent'); 
                var EditHtml = oEditor.EditorDocument;
               
                var inptxt = label;
                if(oEditor.GetXHTML(true).indexOf(inptxt) != -1){
                    if (navigator.appVersion.indexOf("MSIE") != -1){
                        var rng = oEditor.EditorDocument.body.createTextRange();
                        rng.findText(inptxt,1,0);  
                        rng.scrollIntoView();  
                        rng.select();
                        rng.collapse(false);  
                    }else{
                        var sel = oEditor.EditorWindow.getSelection();
                        var rng = oEditor.EditorDocument.createRange();   
                        var M = oEditor.EditorDocument.createTextNode(inptxt);
                        rng.setStart(M, 0);
                        rng.setEnd(M, M.length);
                        sel.removeAllRanges();
                        sel.addRange(rng);
                    }
                }else{
                    alert("该标签不存在或者已经被删除");
                }
            }

这里FCKEditor的实例ID为'fckcontent'
,利用FCK自带的一个API函数找到他,并通过findText这个方法来找到想要找的字符串
IE下的相对简单,FF下JS对TextRange的操作截然不同,搞的我那个郁闷啊
这里的rng.setStart(M, 0);是FCK自己封装过的一个函数,设定一个区域块的起点,都是参考FCK的源代码写的

可能语言组织的不好,希望可能帮到大家少走弯路,有什么不懂的可以问,我会尽快给您回复的,谢谢大家的支持!

posted on 2008-06-04 12:41  吕鑫  阅读(538)  评论(2编辑  收藏  举报

导航