fckeditor我的开发操作记录

判断页面是否加载完毕js,并初始化fckeditor的内容

一、IE5.5以上可用,判断页面加载完毕

    var timer ;
    function checkload() {
        if (document.readyState == "complete") {
            clearInterval(timer);
            var fckobj = FCKeditorAPI.GetInstance("contest");
            alert(fckobj);
            fckobj.EditorDocument.getElementById("but").value = "fuck";
        } else{
            timer = setInterval("checkload()", 100);
        }
    }
    checkload();

 

二、for Mozilla 判断文档内容加载完毕
    document.addEventListener("DOMContentLoaded",
        function(){
            alert("firefox DOM加载完毕!");
            var fckobj = FCKeditorAPI.GetInstance("contest");
            fckobj.EditorDocument.getElementById("but2").value = "shit";
       }, null);

 

三、如果上面的不好用,给个通用的,这个函数在完全加载完fckeditor后,自动调用,有什么对fckeditor操作的内容,就可以写在里面了!

function FCKeditor_OnComplete(oFCKeditor)   {
    var fckobj = FCKeditorAPI.GetInstance("contest");
    fckobj.EditorDocument.getElementById("but1").value = "fuck";

}

 

四、为fckeditor中的控件添加内容

<script type="text/javascript">
    var oFCKeditor = new FCKeditor('contest', true) ;
    oFCKeditor.BasePath = '../../fckeditor/';
    oFCKeditor.ToolbarSet = 'Default';
    oFCKeditor.Width = '740px';
    oFCKeditor.Height = '400px';
    oFCKeditor.Value = "<input type=button id=but1>";
    //加载模板0
    oFCKeditor.Create();
   

    function FCKeditor_OnComplete(oFCKeditor)   {
        var fckobj = FCKeditorAPI.GetInstance("contest");
        fckobj.EditorDocument.getElementById("but1").value = "fuck";

    }

</script>

 

五、在外部调用fckeditor的控件操作

    获取fckeditor对象有两种方法

    1、var fckobj = FCKeditorAPI.GetInstance("contest");

    2、var fckobj2 = FCKeditorAPI.GetInstanceObject("contest");

    以上两种都可以创建一个fckeditor对象

 

    获取可操作的控件对象,传入的字符串,在fckconfig.js中的ToolbarSets里

    var comm = fckobj2.Commands.GetCommand("Templates")

 

    执行操作

    comm.execute();

 

    获取文本域的html内容

    fckobj2.GetHTML();

 

六、异步加载模板

function getHTML(o) {
    var r = "";
    for (var i = 0; i < o.childNodes.length; i++)
        r += o.childNodes[i].nodeValue;
    return r;
}
//Index:要加载的模板的索引号,从0开始
//url:模板xml的路径,相对当前页面
//使用ajax加载xml模板文件,防止google浏览器不支持当前通用的xml加载的方法从而不能在
function ShowBo__LoadTemplates(Index, url) {
    url += "?ts=" + new Date().toString();
    var o;
    if (window.XMLHttpRequest)
        o = new XMLHttpRequest();
    else if (window.ActiveXObject)
        o = new ActiveXObject("microsoft.xmlhttp");
    else {
        alert("浏览器不支持当前流行的ajax!");
        return "";
    }
    if (o) {
        //同步
        o.open('get', url, false);
        o.send(null)
        var dom = o.responseXML;
        //获取模板html
        var tmps = dom.getElementsByTagName("Html");
        //没有模板或者路径出错时则返回空
        if (tmps.length == 0)
            return "";
        //索引号大于模板数量则默认第一个模板
        if (Index >= tmps.length)
            Index = 0;
        return document.all ? tmps[Index].firstChild.nodeValue : getHTML(tmps[Index]);
    }
}
//加载模板1====================指定配置文件目录
//var tmpHtml = ShowBo__LoadTemplates(1, 'fcktemplates.xml');

 

七、编辑内容提交问题

    在fckeditor编辑完之后,我们有两种情况要提交:一、是再提交到另一个页面;二、是提交到服务器。

    提交服务器我们会把内容添加到数据库,这个可以,但是从数据库取出内容在页面显示,会报“未结束的.....”提示,这是因为你保存的数据有很多回车,导致内容不连贯。

    为了解决这个问题,只需要将内容的全部空白字符替换掉再使用。

    java代码:

    request.getParameter("record").replace("\r\n", "");

 

    javascript代码:

    1、先在编辑页面用使用url传递编辑内容,然后在参数的传递上经过一下处理

    FCKeditorAPI.GetInstance("desofimage").GetHTML()

    2、在显示页去掉空白字符,这里用的el表达式

    "${param.desofimages}".replace(/^\s+|\s+$/g, "")

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值