Javascript Highcharts:显示前的工具提示延迟
在我的highchart上,在显示系列工具提示之前,我需要一个延迟 我用定时器定义了一个新的刷新函数来实现它。如果计时器准备好了,我检查鼠标位置是否正确。如果它没有移动那么多,工具提示就会出现Javascript Highcharts:显示前的工具提示延迟,javascript,highcharts,tooltip,Javascript,Highcharts,Tooltip,在我的highchart上,在显示系列工具提示之前,我需要一个延迟 我用定时器定义了一个新的刷新函数来实现它。如果计时器准备好了,我检查鼠标位置是否正确。如果它没有移动那么多,工具提示就会出现 function (H) { var timer = []; var mousePosition = { x: 0, y: 0 };
function (H) {
var timer = [];
var mousePosition = {
x: 0,
y: 0
};
window.addEventListener("mousemove", function (event) {
mousePosition.x = event.pageX;
mousePosition.y = event.pageY;
});
var getMousePositionX = function () {
return mousePosition.x;
};
var clearTimer = function () {
timer = [];
}
H.wrap(H.Tooltip.prototype, 'refresh', function (proceed) {
var mousePosX = getMousePositionX();
var delayForDisplay = this.chart.options.tooltip.delayForDisplay ? this.chart.options.tooltip.delayForDisplay : 1000;
timer[timer.length+1] = window.setTimeout(function () {
var currMousePosX = getMousePositionX();
if ((mousePosX >= currMousePosX - 5 && mousePosX <= currMousePosX + 5)) {
this.proceed.apply(this.tooltip, this.refreshArguments);
clearTimer();
}
}.bind({
refreshArguments: Array.prototype.slice.call(arguments, 1),
chart: this.chart,
tooltip: this,
clearTimer: clearTimer,
proceed: proceed
}), delayForDisplay);
});
};
功能(H){
变量计时器=[];
变量鼠标位置={
x:0,,
y:0
};
addEventListener(“mousemove”,函数(事件){
mousePosition.x=event.pageX;
mousePosition.y=event.pageY;
});
var getMousePositionX=函数(){
返回mousePosition.x;
};
var clearTimer=函数(){
定时器=[];
}
H.wrap(H.Tooltip.prototype,“刷新”,函数(继续){
var mousePosX=getMousePositionX();
var delayForDisplay=this.chart.options.tooltip.delayForDisplay?this.chart.options.tooltip.delayForDisplay:1000;
timer[timer.length+1]=window.setTimeout(函数(){
var currMousePosX=getMousePositionX();
如果((mousePosX>=currMousePosX-5&&mousePosX,您可以根据标准的Highcharts工具提示创建新的工具提示,并在鼠标上方显示该提示,但需要一些超时时间:
load: function() {
chart = this;
this.myTooltip = new Highcharts.Tooltip(this, this.options.tooltip);
this.tooltip.label.element.remove();
}
point: {
events: {
mouseOver: function(e) {
var i = this.x;
points = [];
Highcharts.each(this.series.chart.series, function(s) {
Highcharts.each(s.data, function(p) {
if (p.x === i) {
points.push(p)
}
})
});
myTooltip = chart.myTooltip;
setTimeout(function() {
myTooltip.refresh(points, e)
}, 1000)
}, mouseOut: function() {
setTimeout(function() {
chart.myTooltip.hide();
}, 1000)
}
}
}
在这里,你可以看到一个例子:我希望这个例子可以帮助你解决你的问题:@GrzegorzBlachliński:这正是我想要的。你太棒了:)很高兴看到我的想法对你有用。我也把它作为答案贴在这里:)