ckeditor多个span标签不合并的问题。

http://dev.ckeditor.com/ticket/9295 关于这个bug。可以用下面这个方法。找到ckeditor.js,然后替换代码中的mergeSiblings函数就ok了,如果还有问题。可以一起讨论。大笑

 mergeSiblings: (function() {
            function i(j, k, l) {
                if (k && k.type == 1) {
                    var m = [];
                  //myself code start
                    var tempnode;
                    for(var tttt in j){
                        tempnode = j[tttt];//get the span node
                    break;
                    }
                    var tempnodecss = tempnode.style.cssText;//get span node style
                    var list = tempnode.childNodes;//get this node's children
                    var tempContent;
                    for(var kkkkk in list){
                    if(list[kkkkk].tagName !=null && list[kkkkk].tagName !="")
                    if(list[kkkkk].tagName.toLowerCase()=='span'){//if the node is span ,then combine it
                    var nodecss = list[kkkkk].style.cssText;
                    if(nodecss.indexOf("display")<0){//if the sytle attribute is display ,continue
                    tempnodecss = tempnodecss+nodecss;
                    list[kkkkk].removeAttribute("style");//remove the style
                    }
                    }
                    }
                    tempnode.style.cssText = tempnodecss;//set node style
                    var tempcontent = tempnode.innerHTML;//get node innerHtml
                    var regExp = new RegExp("<span>","gi");//for replace <span>
                    var regSpanEnd = new RegExp(">naps\\/<");//for replace</span>
                    var reglist = tempcontent.match(regExp);//get <span>
                    var reverseStr="";//temp reverse node innerHtml
                    tempcontent= tempcontent.replace(regExp,"");//for remove <span>
                    for(var count in reglist){
                    //reverse start
                    for(var iiii=0;iiii<tempcontent.length;iiii++){
                    reverseStr+=tempcontent.charAt(tempcontent.length-iiii);
                    }
                    reverseStr+=tempcontent.charAt(0);
                    //reverse end
                    reverseStr=reverseStr.replace(regSpanEnd,"");//remove </span>
                    tempcontent="";
                    //reverse again start
                    for(var iiii=0;iiii<reverseStr.length;iiii++){
                    tempcontent+=reverseStr.charAt(reverseStr.length-iiii);
                    }
                    tempcontent+=reverseStr.charAt(0);
                    //reverse again end
                    }
                    tempnode.innerHTML = tempcontent;//set node innerHtml
  //myself code end


                    while (k.data('cke-bookmark') || k.isEmptyInlineRemoveable()) {
                        m.push(k);
                        k = l ? k.getNext() : k.getPrevious();
                        if (!k || k.type != 1) return;
                    }
                    if (j.isIdentical(k)) {
                        var n = l ? j.getLast() : j.getFirst();
                        while (m.length) m.shift().move(j, !l);
                        k.moveChildren(j, !l);
                        k.remove();
                        if (n && n.type == 1) n.mergeSiblings();
                    }
                }
            };
            return function(j) {
                var k = this;
                if (! (j === false || f.$removeEmpty[k.getName()] || k.is('a'))) return;
                i(k, k.getNext(), true);
                i(k, k.getPrevious());
            };
        })(),

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值