商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > FCKEditor常用Js代码,获取FCK内容,统计FCK字数,向FCK写入指定代码

FCKEditor常用Js代码,获取FCK内容,统计FCK字数,向FCK写入指定代码

  发布于2026-07-22 阅读(0)

扫一扫,手机访问

在FCKeditor的实际开发中,Ja vaScript API的调用往往是最频繁也最容易出坑的地方。很多开发者习惯直接复制网上的片段,却忽略了不同版本之间的差异,以及编辑器实例化后的状态判断。这里整理了一套常用的操作函数,涵盖了内容获取、插入、统计、命令执行和直接设置等场景,基本能满足日常大部分需求。

复制代码

//获取格式化的编辑器内容
function getEditorContents(){
    var oEditor = FCKeditorAPI.GetInstance("content");
    alert(oEditor.GetXHTML(true));
}

//向编辑器插入指定代码
function insertHTMLToEditor(codeStr){
    var oEditor = FCKeditorAPI.GetInstance("content");
    if (oEditor.EditMode==FCK_EDITMODE_WYSIWYG){
        oEditor.InsertHtml(codeStr);
    }else{
        return false;
    }
}

//统计编辑器中内容的字数
function getLength(){
    var oEditor = FCKeditorAPI.GetInstance("content");
    var oDOM = oEditor.EditorDocument;
    var iLength ;
    if(document.all){
        iLength = oDOM.body.innerText.length;
    }else{
        var r = oDOM.createRange();
        r.selectNodeContents(oDOM.body);
        iLength = r.toString().length;
    }
    alert(iLength);
}

//执行指定动作
function ExecuteCommand(commandName){
    var oEditor = FCKeditorAPI.GetInstance("content") ;
    oEditor.Commands.GetCommand(commandName).Execute() ;
}

//设置编辑器中内容
function SetContents(codeStr){
    var oEditor = FCKeditorAPI.GetInstance("content") ;
    oEditor.SetHTML(codeStr) ;
}

先看第一个函数 getEditorContents。它通过 FCKeditorAPI.GetInstance 获取到名为 "content" 的编辑器实例,然后调用 GetXHTML(true) 输出格式化后的 XHTML 内容。这里有个细节:参数 true 表示强制转换成 XHTML 格式,如果不需要严格闭合标签,可以传入 false。不过在实际项目中,多数情况下我们都需要干净的 XHTML,所以保留这个参数是稳妥的做法。

第二个函数 insertHTMLToEditor 用于向编辑器当前光标位置插入一段 HTML 代码。注意它先判断了编辑器的模式是否为 FCK_EDITMODE_WYSIWYG(即所见即所得模式),如果不是,则直接返回 false。这个检查很关键——如果编辑器处于源代码模式,InsertHtml 会失效,容易造成无响应的假象。很多新手会忽略这一点,导致插入功能在切换模式后突然失灵。

字数统计函数 getLength 则展示了兼容性处理的思路。它通过 oEditor.EditorDocument 获取编辑器内部的 DOM 文档,然后分浏览器处理:document.all 判断是 IE 浏览器(旧版),直接取 innerText 的长度;其他浏览器则用 createRange 选中整个 body 后转字符串统计。这个写法虽然有点年代感,但对于 FCKeditor 这种老牌编辑器来说,兼容 IE 8 以下仍是必要的。如果项目已经放弃旧版 IE,可以简化成 innerText 统一处理。

ExecuteCommand 函数展示了如何执行编辑器内置命令,比如加粗、斜体、撤销等。传入的命令名称必须与 FCKeditor 的定义一致,例如 "Bold""Italic""Undo"。这个函数封装得比较薄,但好处是通用——你不需要为每个命令单独写一套逻辑,只需传入对应的字符串即可。

最后一个 SetContents 是整个编辑器内容替换的入口。调用 SetHTML 会直接清空当前内容并填入新代码。注意它不会触发历史记录,所以如果要实现撤销功能,需要先手动保存快照。另外,传入的代码最好是完整的 HTML 片段,否则编辑器可能会自动补全一些标签,导致显示异常。

这五个函数基本上覆盖了 FCKeditor 最常用的操作场景。在实际集成时,建议把 FCKeditorAPI.GetInstance("content") 提取成全局变量,避免重复获取实例。同时,每个函数调用前最好检查实例是否存在,以防止页面未加载完时抛出异常。记住,任何编辑器操作都应当建立在编辑器实例完全初始化之后,否则很容易出现 undefined 错误。

本文转载于:https://www.jb51.net/article/23131.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注