Highcharts - 图表中的鼠标事件 - 跨浏览器的e.Offset解决方案

时间:2013-12-18 04:34:20

标签: javascript highcharts jquery

我必须确定鼠标是否在图表内部并显示点的坐标。以下代码适用于chrome但不适用于firefox,因为firefox没有event.offset属性。

  jQuery(chart.container).mouseup(function (event) {
     eoffsetX=event.offsetX;
     eoffsetY=event.offsetY;
     if (eoffsetX > chartX.plotLeft && eoffsetX < chartX.plotLeft + chartX.plotWidth && eoffsetY > chartX.plotTop && eoffsetY < chartX.plotTop + chartX.plotHeight) {
        alert ("The clicked x,y point is "+chart.xAxis[0].toValue(eoffsetX, 0)+" , " + chart.yAxis[0].toValue(eoffsetY, 0));
     }

所以我通过在网上查看几个答案来修改代码,但它仍然不适用于firefox / IE:

  jQuery(chart.container).mouseup(function (event) {
      if(event.offsetX === undefined) {
            eoffsetX=(event.clientX - jQuery(event.target).offset().left);
            eoffsetY=(event.clientY - jQuery(event.target).offset().top);
        }
        else {
            eoffsetX=event.offsetX;
            eoffsetY=event.offsetY;
        }
     if (eoffsetX > chartX.plotLeft && eoffsetX < chartX.plotLeft + chartX.plotWidth && eoffsetY > chartX.plotTop && eoffsetY < chartX.plotTop + chartX.plotHeight) {
        alert ("The clicked x,y point is "+chart.xAxis[0].toValue(eoffsetX, 0)+" , " + chart.yAxis[0].toValue(eoffsetY, 0));
     }      

任何适用于浏览器的解决方案都可以吗?

2 个答案:

答案 0 :(得分:1)

您也可以使用:

 var offsetX = typeof(e.offsetX)==='undefined' ? e.clientX:e.offsetX,
     offsetY = typeof(e.offsetY)==='undefined' ? e.clientY:e.offsetY;

答案 1 :(得分:0)

好的......在我发布问题后几分钟我得到了答案......为可能需要它的人发布解决方案:

简单地替换

jQuery(event.target).offset().leftjQuery(this).offset().left

jQuery(event.target).offset().topjQuery(this).offset().top

cheerio它有效!