X-Git-Url: https://jasonwoof.com/gitweb/?p=ckeditor.git;a=blobdiff_plain;f=_source%2Fcore%2Fdom%2Frange.js;h=c18740001126956db327a676e147ae4eb2da7d91;hp=5a05ee1f0b05f12c5d420d2bd3d5021ce103bf6a;hb=66f4ae0bf0280ed56bf7c0f4ab175424dd1d47a0;hpb=f8fc585c18d287eb325c575596d183122486b641 diff --git a/_source/core/dom/range.js b/_source/core/dom/range.js index 5a05ee1..c187400 100644 --- a/_source/core/dom/range.js +++ b/_source/core/dom/range.js @@ -1789,8 +1789,15 @@ CKEDITOR.dom.range = function( document ) */ getEnclosedNode : function() { - var walkerRange = this.clone(), - walker = new CKEDITOR.dom.walker( walkerRange ), + var walkerRange = this.clone(); + + // Optimize and analyze the range to avoid DOM destructive nature of walker. (# + walkerRange.optimize(); + if ( walkerRange.startContainer.type != CKEDITOR.NODE_ELEMENT + || walkerRange.endContainer.type != CKEDITOR.NODE_ELEMENT ) + return null; + + var walker = new CKEDITOR.dom.walker( walkerRange ), isNotBookmarks = CKEDITOR.dom.walker.bookmark( true ), isNotWhitespaces = CKEDITOR.dom.walker.whitespaces( true ), evaluator = function( node )