从触摸事件中提取图表坐标以进行自定义HighCharts交互

从触摸事件中提取图表坐标以进行自定义HighCharts交互,highcharts,Highcharts,我在处理HighCharts中的触摸事件时遇到一些问题。我能够接收到事件,但我还没有弄清楚如何将给定的坐标转换为图表坐标。对于鼠标事件,我可以使用以下方法检索图表X值: chart.xAxis[0].toValue(e.offsetX) 但是,触摸事件没有偏移量。对于点击,还有e.originalEvent.chartX,它似乎与e.offsetX相同,但对于触摸事件,它同样缺失。通过检查触摸事件,我可以找到clientX、screenX和pageX,但是axis.toValue不会为这些值返

我在处理HighCharts中的触摸事件时遇到一些问题。我能够接收到事件,但我还没有弄清楚如何将给定的坐标转换为图表坐标。对于鼠标事件,我可以使用以下方法检索图表X值:

chart.xAxis[0].toValue(e.offsetX)
但是,触摸事件没有
偏移量
。对于点击,还有
e.originalEvent.chartX
,它似乎与
e.offsetX
相同,但对于触摸事件,它同样缺失。通过检查触摸事件,我可以找到clientX、screenX和pageX,但是
axis.toValue
不会为这些值返回正确的图表X

和 两者都提到使用“跟踪器”对象来调用
normalizeemousevent
,但我似乎无法在API参考或检查相关对象中找到它


如何从触摸事件中提取正确的X和Y图表值?

您可以从更改的触摸对象中提取该值

e.originalEvent.changedTouches[0].pageX
e.originalEvent.changedTouches[0].pageY

为了提取我用于鼠标事件的event.offsetX的等价物,我最终使用了以下代码:

function accumulate_offset(next_container) {
  offset = 0;
  while (next_container != null) {
    offset += next_container.offsetLeft;
    next_container = next_container.offsetParent;
  }
  return offset;
}

// then in handler
if (e.type.slice(0,5) == 'mouse') {
  xVal = e.offsetX;
} else {
  xVal = e.originalEvent.changedTouches[0].pageX - accumulate_offset(e.currentTarget);
}
x = axis.toValue(xVal);
希望这对某人有帮助