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

Javascript Highcharts-图表中的鼠标事件-e.跨浏览器的偏移解决方案,javascript,highcharts,jquery,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

我必须确定鼠标是否在图表中,并显示点的坐标。以下代码在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));
     }
jQuery(chart.container).mouseup(函数(事件){
eoffsetX=event.offsetX;
eoffsetY=event.offsetY;
如果(eoffsetX>chartX.plotLeft&&eoffsetXchartX.plotTop&&eoffsetY
因此,我在网上查看了一些答案,对代码进行了修改,但它仍然不适用于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));
     }      
jQuery(chart.container).mouseup(函数(事件){
如果(event.offsetX==未定义){
eoffsetX=(event.clientX-jQuery(event.target.offset().left);
eoffsetY=(event.clientY-jQuery(event.target.offset().top);
}
否则{
eoffsetX=event.offsetX;
eoffsetY=event.offsetY;
}
如果(eoffsetX>chartX.plotLeft&&eoffsetXchartX.plotTop&&eoffsetY

有跨浏览器的解决方案吗?

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

简单地替换

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

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


干杯!它很有效!

您也可以使用以下功能:

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

但是我应该使用“e.clientX-jQuery(this).offset().left”来代替“e.clientX”。此外,由于有两个比较语句,所以这应该比使用一个比较语句效率低,尽管它看起来更整洁。这取决于您,这只是一个建议;)