关于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的源代码写的
可能语言组织的不好,希望可能帮到大家少走弯路,有什么不懂的可以问,我会尽快给您回复的,谢谢大家的支持!
查了好多资料,最后找到了同时可以在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的源代码写的
可能语言组织的不好,希望可能帮到大家少走弯路,有什么不懂的可以问,我会尽快给您回复的,谢谢大家的支持!