Changes between Version 2 and Version 3 of Ticket #9295, comment 4


Ignore:
Timestamp:
May 8, 2013, 8:33:33 AM (11 years ago)
Author:
liujunhao
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #9295, comment 4

    v2 v3  
    1 When insert span tag,there is no method to combine the inner style.I looked the other tool like ckeditor.I paste the code here.Is there anyone can help me solove this problem? I think many friends will appreciate of your action.
     1You can replace the function mergeSiblings with this code.
     2mergeSiblings: (function() {
     3            function i(j, k, l) {
     4                if (k && k.type == 1) {
     5                    var m = [];
     6                  //myself code start
     7                    var tempnode;
     8                    for(var tttt in j){
     9                        tempnode = j[tttt];//get the span node
     10                        break;
     11                    }
     12                    var tempnodecss = tempnode.style.cssText;//get span node style
     13                    var list = tempnode.childNodes;//get this node's children
     14                    var tempContent;
     15                    for(var kkkkk in list){
     16                        if(list[kkkkk].tagName !=null && list[kkkkk].tagName !="")
     17                                if(list[kkkkk].tagName.toLowerCase()=='span'){//if the node is span ,then combine it
     18                                        var nodecss = list[kkkkk].style.cssText;
     19                                        if(nodecss.indexOf("display")<0){//if the sytle attribute is display ,continue
     20                                                tempnodecss = tempnodecss+nodecss;
     21                                                list[kkkkk].removeAttribute("style");//remove the style
     22                                        }
     23                                }
     24                    }
     25                    tempnode.style.cssText = tempnodecss;//set node style
     26                    var tempcontent = tempnode.innerHTML;//get node innerHtml
     27                    var regExp = new RegExp("<span>","gi");//for replace <span>
     28                    var regSpanEnd = new RegExp(">naps\\/<");//for replace</span>
     29                    var reglist = tempcontent.match(regExp);//get <span>
     30                    var reverseStr="";//temp reverse node innerHtml
     31                    tempcontent= tempcontent.replace(regExp,"");//for remove <span>
     32                    for(var count in reglist){
     33                        //reverse start
     34                        for(var iiii=0;iiii<tempcontent.length;iiii++){
     35                                reverseStr+=tempcontent.charAt(tempcontent.length-iiii);
     36                        }
     37                        reverseStr+=tempcontent.charAt(0);
     38                        //reverse end
     39                        reverseStr=reverseStr.replace(regSpanEnd,"");//remove </span>
     40                        tempcontent="";
     41                        //reverse again start
     42                        for(var iiii=0;iiii<reverseStr.length;iiii++){
     43                                tempcontent+=reverseStr.charAt(reverseStr.length-iiii);
     44                        }
     45                        tempcontent+=reverseStr.charAt(0);
     46                        //reverse again end
     47                    }
     48                    tempnode.innerHTML = tempcontent;//set node innerHtml
     49  //myself code end
    250
    3   mergeChild:function (node, tagName, attrs) {
    4         var list = domUtils.getElementsByTagName(node, node.tagName.toLowerCase());
    5         for (var i = 0, ci; ci = list[i++];) {
    6             if (!ci.parentNode || domUtils.isBookmarkNode(ci)) {
    7                 continue;
    8             }
    9      
    10             if (ci.tagName.toLowerCase() == 'span') {
    11                 if (node === ci.parentNode) {
    12                     domUtils.trimWhiteTextNode(node);
    13                     if (node.childNodes.length == 1) {
    14                         node.style.cssText = ci.style.cssText + ";" + node.style.cssText;
    15                         domUtils.remove(ci, true);
    16                         continue;
     51                    while (k.data('cke-bookmark') || k.isEmptyInlineRemoveable()) {
     52                        m.push(k);
     53                        k = l ? k.getNext() : k.getPrevious();
     54                        if (!k || k.type != 1) return;
     55                    }
     56                    if (j.isIdentical(k)) {
     57                        var n = l ? j.getLast() : j.getFirst();
     58                        while (m.length) m.shift().move(j, !l);
     59                        k.moveChildren(j, !l);
     60                        k.remove();
     61                        if (n && n.type == 1) n.mergeSiblings();
    1762                    }
    1863                }
    19                 ci.style.cssText = node.style.cssText + ';' + ci.style.cssText;
    20                 if (attrs) {
    21                     var style = attrs.style;
    22                     if (style) {
    23                         style = style.split(';');
    24                         for (var j = 0, s; s = style[j++];) {
    25                             ci.style[utils.cssStyleToDomStyle(s.split(':')[0])] = s.split(':')[1];
    26                         }
    27                     }
    28                 }
    29                 if (domUtils.isSameStyle(ci, node)) {
    30                     domUtils.remove(ci, true);
    31                 }
    32                 continue;
    33             }
    34             if (domUtils.isSameElement(node, ci)) {
    35                 domUtils.remove(ci, true);
    36             }
    37         }
    38     }
     64            };
     65            return function(j) {
     66                var k = this;
     67                if (! (j === false || f.$removeEmpty[k.getName()] || k.is('a'))) return;
     68                i(k, k.getNext(), true);
     69                i(k, k.getPrevious());
     70            };
     71        })(),
© 2003 – 2022, CKSource sp. z o.o. sp.k. All rights reserved. | Terms of use | Privacy policy