jQPLOT - 内存泄漏

3

我想建立一个能够进行交互式刷新的图表。我使用jqPlot,但是试图通过调用replot()或redraw()来更新图表会导致浏览器内存泄漏。您有任何想法如何解决这个问题吗?

function crateChart() {
    var s1 = [['a',6], ['b',8], ['c',14], ['d',20]];
    var s2 = [['a', 8], ['b', 12], ['c', 6], ['d', 9]];

    this.plot = $.jqplot('chart', [s1, s2], {
        seriesDefaults: {
        renderer:$.jqplot.DonutRenderer,
        rendererOptions:{
            sliceMargin: 3,
            startAngle: -90,
            showDataLabels: true,
            dataLabels: 'value'
            }
        }
    });
}

function update () {
    ChartTester.plot.series[0].data = [
        ['a', Math.random() * 100],
        ['b', Math.random() * 100],
        ['c', Math.random() * 100],
        ['d', Math.random() * 100]
    ];

    ChartTester.plot.destroy();
    $('#chart *').unbind();
    $('#chart').empty();
    ChartTester.plot.redraw();
}

在服务器端构建图形,然后将完成的图像发送到浏览器是一种选择吗? - djangofan
哪些浏览器存在内存泄漏问题? jqPlot与IE < 9特别是存在长期的内存问题历史。 - Mark
1个回答

0

我没有一个“即插即用”的解决方案,但是有一个很好的JQPlot图表动态数据更新的例子可以给你灵感:http://jsfiddle.net/fracu/HrZcj/

基本上,更新函数就像这样:

function updateSeries() {
    myData.splice(0, 1);
    x = (new Date()).getTime();
    y = Math.floor(Math.random() * 100);
    myData.push([x, y]);

    plot1.series[0].data = myData;
    plot1.resetAxesScale();
    plot1.axes.xaxis.numberTicks = 10;
    plot1.axes.y2axis.numberTicks = 15;
    plot1.replot();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接