Ticket #3671: 3671.patch

File 3671.patch, 1.6 KB (added by Garry Yao, 9 years ago)
  • _source/core/htmlparser/fragment.js

     
    9999                {
    100100                        target = target || currentNode || fragment;
    101101
     102
    102103                        // If the target is the fragment and this element can't go inside
    103104                        // body (if fixForBody).
    104                         if ( fixForBody && !target.type && !CKEDITOR.dtd.$body[ element.name ] )
     105                        if ( fixForBody && !target.type )
    105106                        {
    106                                 var savedCurrent = currentNode;
     107                                var elementName, realElement;
     108                                if ( element.attributes
     109                                         && ( realElement = element.attributes._cke_realelement )
     110                                         && ( realElement = new CKEDITOR.htmlParser.fragment.fromHtml( decodeURIComponent( realElement ) ) )
     111                                         && ( realElement = realElement.children[ 0 ] ) )
     112                                        elementName = realElement.name;
     113                                else
     114                                        elementName =  element.name;
     115                                if ( !( elementName in CKEDITOR.dtd.$body ) )
     116                                {
     117                                        var savedCurrent = currentNode;
    107118
    108                                 // Create a <p> in the fragment.
    109                                 currentNode = target;
    110                                 parser.onTagOpen( 'p', {} );
     119                                        // Create a <p> in the fragment.
     120                                        currentNode = target;
     121                                        parser.onTagOpen( 'p', {} );
    111122
    112                                 // The new target now is the <p>.
    113                                 target = currentNode;
     123                                        // The new target now is the <p>.
     124                                        target = currentNode;
    114125
    115                                 if ( enforceCurrent )
    116                                         currentNode = savedCurrent;
    117                         }
     126                                        if ( enforceCurrent )
     127                                                currentNode = savedCurrent;
     128                                }
     129                        }
    118130
    119131                        // Rtrim empty spaces on block end boundary. (#3585)
    120132                        if ( element._.isBlockLike )
© 2003 – 2017 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy