Javascript 单击绘图到画布在鼠标离开图表时清除文本

Javascript 单击绘图到画布在鼠标离开图表时清除文本,javascript,canvas,chart.js,Javascript,Canvas,Chart.js,我有一个ChartJS甜甜圈图表,我想点击一个部分,它在图表的中心显示关于该部分的信息。我已经让这个工作,但每当鼠标离开图表段的信息消失,我希望它停留,直到另一个图表段被点击 我已经把这方面的一个基本例子放在 如何将文本保持在图表的中心?不要直接绘制到画布上(因为它由chart.js管理),而是使用。您可以使用提供的其中一个挂钩-例如afterDraw在绘制图表后绘制您的资料 正在工作的JSFIDLE: 你能在JSFIDLE中使用它吗?我试过了,没有什么不同()。将所有代码移动到afterDra

我有一个ChartJS甜甜圈图表,我想点击一个部分,它在图表的中心显示关于该部分的信息。我已经让这个工作,但每当鼠标离开图表段的信息消失,我希望它停留,直到另一个图表段被点击

我已经把这方面的一个基本例子放在


如何将文本保持在图表的中心?

不要直接绘制到画布上(因为它由chart.js管理),而是使用。您可以使用提供的其中一个挂钩-例如
afterDraw
在绘制图表后绘制您的资料

正在工作的JSFIDLE:

你能在JSFIDLE中使用它吗?我试过了,没有什么不同()。将所有代码移动到
afterDraw
将给出答案。当然,我已经更新了答案<每次重新绘制图表时(也在鼠标移动时),都会调用code>afterDraw,因此您需要将所选标签存储在某个位置,否则它将被清除。我选择将其附加到图表实例。这在Chrome中非常有效,但在IE11中不会显示图表。也不会在调试器中标记任何问题。有什么办法吗?这是因为没有支持对象函数速记,就是这样!干杯
canvas.onclick = function(evt) {
    var activePoints = donut.getElementsAtEvent(evt);
    if(activePoints[0]) {
        var chartData = activePoints[0]['_chart'].config.data;
        var idx = activePoints[0]['_index'];
        var label = chartData.labels[idx].toUpperCase();

        ctx.font = "bold 18px Verdana, Arial, sans-serif";
        var textWidth = ctx.measureText(label).width;

        ctx.fillStyle = "#000";
        ctx.fillText(label, (250/2) - (textWidth/2), (250/2));
    }
};