code: function () {
              if ( this._cachedStartElement ) {
                  return this._cachedStartElement;
              }
              var range = browser.ie9below ? this.getIERange() : this.getRange(),
                  tmpRange,
                  start, tmp, parent;
              if ( browser.ie9below ) {
                  if ( !range ) {
                      //todo 给第一个值可能会有问题
                      return this.document.body.firstChild;
                  }
                  //control元素
                  if ( range.item ){
                      return range.item( 0 );
                  }
                  tmpRange = range.duplicate();
                  //修正ie下<b>x</b>[xx] 闭合后 <b>x|</b>xx
                  tmpRange.text.length > 0 && tmpRange.moveStart( 'character', 1 );
                  tmpRange.collapse( 1 );
                  start = tmpRange.parentElement();
                  parent = tmp = range.parentElement();
                  while ( tmp = tmp.parentNode ) {
                      if ( tmp == start ) {
                          start = parent;
                          break;
                      }
                  }
              } else {
                  range.shrinkBoundary();
                  start = range.startContainer;
                  if ( start.nodeType == 1 && start.hasChildNodes() ){
                      start = start.childNodes[Math.min( start.childNodes.length - 1, range.startOffset )];
                  }
                  if ( start.nodeType == 3 ){
                      return start.parentNode;
                  }
              }
              return start;
          }
docs: 获取开始元素，用于状态反射
  @method getStart
  @return { Element } 获得开始元素
  @example
  ```javascript
  editor.selection.getStart();
  ```