Highcharts - событие мыши на графике - решение e.Offset в разных браузерах

0

Я должен определить, находится ли мышь даже внутри диаграммы или нет, и отображают координаты точки. Следующий код хорошо работает в 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));
     }      

Любые решения, которые будут работать в браузерах, пожалуйста?

Теги:
highcharts

2 ответа

0
Лучший ответ

Хорошо... Я получил ответ через несколько минут после того, как я разместил вопрос... опубликовал решение для других, кому это может понадобиться:

Просто замените

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

а также

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

И cheerio это работает!

1

Вы также можете использовать это:

 var offsetX = typeof(e.offsetX)==='undefined' ? e.clientX:e.offsetX,
     offsetY = typeof(e.offsetY)==='undefined' ? e.clientY:e.offsetY;
  • 0
    но вместо «e.clientX» я должен использовать «e.clientX-jQuery (this) .offset (). left». Также, поскольку есть два оператора сравнения, это должно быть менее эффективно, чем одно сравнение, хотя это выглядит аккуратнее.
  • 0
    Все зависит от вас, это всего лишь предложение;)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню