Я должен определить, находится ли мышь даже внутри диаграммы или нет, и отображают координаты точки. Следующий код хорошо работает в 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));
}
Любые решения, которые будут работать в браузерах, пожалуйста?
Хорошо... Я получил ответ через несколько минут после того, как я разместил вопрос... опубликовал решение для других, кому это может понадобиться:
Просто замените
jQuery(event.target).offset().left
to jQuery(this).offset().left
а также
jQuery(event.target).offset().top
to jQuery(this).offset().top
И cheerio это работает!
Вы также можете использовать это:
var offsetX = typeof(e.offsetX)==='undefined' ? e.clientX:e.offsetX,
offsetY = typeof(e.offsetY)==='undefined' ? e.clientY:e.offsetY;