Index: _source/core/htmlparser/fragment.js
===================================================================
--- _source/core/htmlparser/fragment.js (revision 6284)
+++ _source/core/htmlparser/fragment.js (revision )
@@ -48,6 +48,9 @@
CKEDITOR.dtd.table, CKEDITOR.dtd.ul, CKEDITOR.dtd.ol, CKEDITOR.dtd.dl ),
listBlocks = CKEDITOR.dtd.$list, listItems = CKEDITOR.dtd.$listItem;
+ // Dtd of the fragment element, basically it accept anything except for intermediate structure, e.g. orphan
.
+ var rootDtd = CKEDITOR.tools.extend( {}, { html: 1}, CKEDITOR.dtd.html, CKEDITOR.dtd.body, CKEDITOR.dtd.head );
+
/**
* Creates a {@link CKEDITOR.htmlParser.fragment} from an HTML string.
* @param {String} fragmentHtml The HTML to be parsed, filling the fragment.
@@ -203,9 +206,9 @@
var currentName = currentNode.name;
- var currentDtd = currentName
- && ( CKEDITOR.dtd[ currentName ]
- || ( currentNode._.isBlockLike ? CKEDITOR.dtd.div : CKEDITOR.dtd.span ) );
+ var currentDtd = currentName ? ( CKEDITOR.dtd[ currentName ]
+ || ( currentNode._.isBlockLike ? CKEDITOR.dtd.div : CKEDITOR.dtd.span ) )
+ : rootDtd ;
// If the element cannot be child of the current element.
if ( currentDtd // Fragment could receive any elements.