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