code: function(_e){
                  var _type = _e.type;
                  var _button = _e.button;
                  _e.__fixed = true; //标示被fix过
                  _e.target = _e.target || _e.srcElement || document; //for ie
                  _e.metaKey = !!_e.metaKey; //低版本ie会返回undefined 应该返回
  
  
                  if(_e.target.nodeType === 3) _e.target = _e.target.parentNode;
                  if(_rclickEvents.test(_type)){ //如果是鼠标事件 则初始化page相关
                      _e.pageX = _v._$pageX(_e);
                      _e.pageY = _v._$pageY(_e);
                      if (_type === 'mouseover' || _type === 'mouseout'){//如果是鼠标事件中的mouseover与mouseout
                          var related = _e.relatedTarget || _e[(_type == 'mouseover' ? 'from' : 'to') + 'Element'];
                          while (related && related.nodeType == 3) related = related.parentNode;
                          _e.relatedTarget = related;
                      }
                  }
                  _e.which = _e.charCode != null ? _e.charCode : _e.keyCode;
                  if( !_e.which && _button !== undefined){
                      // http://api.jquery.com/event.which/ use which
                      _e.which = ( _button & 1 ? 1 : ( _button & 2 ? 3 : ( _button & 4 ? 2 : 0 ) ) );
                  }
                  if(!_e.preventDefault) _e.preventDefault = function(){
                      this.returnValue = false;
                      return this;
                  };
  
                  if(!_e.stopPropagation) _e.stopPropagation = function(){
                     this.cancelBubble = true;
                     return this;
                  };
              }
docs: patch event