*/\r
getEnclosedNode : function()\r
{\r
- var walkerRange = this.clone(),\r
- walker = new CKEDITOR.dom.walker( walkerRange ),\r
+ var walkerRange = this.clone();\r
+\r
+ // Optimize and analyze the range to avoid DOM destructive nature of walker. (#\r
+ walkerRange.optimize();\r
+ if ( walkerRange.startContainer.type != CKEDITOR.NODE_ELEMENT\r
+ || walkerRange.endContainer.type != CKEDITOR.NODE_ELEMENT )\r
+ return null;\r
+\r
+ var walker = new CKEDITOR.dom.walker( walkerRange ),\r
isNotBookmarks = CKEDITOR.dom.walker.bookmark( true ),\r
isNotWhitespaces = CKEDITOR.dom.walker.whitespaces( true ),\r
evaluator = function( node )\r