code: function (e, chartPosition) {
              var chartX,
                chartY,
                ePos;
  
              // common IE normalizing
              e = e || window.event;
  
              // Framework specific normalizing (#1165)
              e = washMouseEvent(e);
  
              // More IE normalizing, needs to go after washMouseEvent
              if (!e.target) {
                  e.target = e.srcElement;
              }
  
              // iOS (#2757)
              ePos = e.touches ?  (e.touches.length ? e.touches.item(0) : e.changedTouches[0]) : e;
  
              // Get mouse position
              if (!chartPosition) {
                  this.chartPosition = chartPosition = offset(this.chart.container);
              }
  
              // chartX and chartY
              if (ePos.pageX === UNDEFINED) { // IE < 9. #886.
                  chartX = mathMax(e.x, e.clientX - chartPosition.left); // #2005, #2129: the second case is
                  // for IE10 quirks mode within framesets
                  chartY = e.y;
              } else {
                  chartX = ePos.pageX - chartPosition.left;
                  chartY = ePos.pageY - chartPosition.top;
              }
  
              return extend(e, {
                  chartX: mathRound(chartX),
                  chartY: mathRound(chartY)
              });
          }
docs: Add crossbrowser support for chartX and chartY
  @param {Object} e The event object in standard browsers