Javascript Highstock |在xAxis上缩放会导致浏览器崩溃

Javascript Highstock |在xAxis上缩放会导致浏览器崩溃,javascript,highcharts,highstock,Javascript,Highcharts,Highstock,我真的不知道该怎么办了。我正在我的Web应用程序中开发一个highstock图表。数据加载正确,但一旦我在图表选项中启用zoomType:“x”,我就开始在缩放时出错 我不能正确地再现这个错误。但当我尝试沿X轴缩放并选择图表中显示的几乎每个点时,它运行并缩放得很好。但当我选择一组较小的点时,浏览器就会停止,直到chrome关闭。在任务管理器中,我看到内存使用量增加到1GB。我在其他浏览器中测试了它,得到了相同的错误。我不处理xAxis上的事件-只是放大和缩小。 highstockData.jsp

我真的不知道该怎么办了。我正在我的Web应用程序中开发一个highstock图表。数据加载正确,但一旦我在图表选项中启用zoomType:“x”,我就开始在缩放时出错

我不能正确地再现这个错误。但当我尝试沿X轴缩放并选择图表中显示的几乎每个点时,它运行并缩放得很好。但当我选择一组较小的点时,浏览器就会停止,直到chrome关闭。在任务管理器中,我看到内存使用量增加到1GB。我在其他浏览器中测试了它,得到了相同的错误。我不处理xAxis上的事件-只是放大和缩小。 highstockData.jsp只是一个带有许多时间戳的文件

tldr:当我选择许多点时,一切都很顺利。 当我只选择几个点时,浏览器崩溃,内存开始泄漏

更新:当我启用rangeSelector并单击1m时,它也开始建立内存。但当我再等几分钟(最多5分钟)时,它就会加载,内存又开始下降

更新2:我又试着调试了一些。在我等了将近5分钟之后,我在chrome上做了一个cpu使用情况的屏幕截图。它说,近80%的cpu使用是由getnonlineartimeticks使用的

解决方案:仅供他人参考。已经解决了。问题在于

xAxis : {
     tickInterval : 4
  },
在很短的时间间隔内强制xAxis会导致所有的问题

下面是一些代码:

function initHighstock() {
options = {
    chart : {
        zoomType : 'x',
        renderTo : 'highstockContainer'
    },
    plotOptions : {
        series : {
            lineWidth : 0,
            marker : {
                enabled : true,
                radius : 3
            },
        }
    },
    navigator : {
        enabled : false
    },
    yAxis : {
        min : 0,
        max : 24,
        tickInterval : 4
    },
    xAxis : {
        tickInterval : 4
    },
    tooltip : {
    shared : false,
        formatter : function() {
            return '<b>' + Highcharts.dateFormat('%A, %b %e, %Y', this.x) + '</b>' + '<br/>' + 'Time of day: '
                    + this.y;
        }
    },
    rangeSelector : {
        enabled : true
    },
    title : {
        text : 'Diary'
    },
    series : []
};

$.get('highstockData.jsp', function(data) {
    // Split the lines
    var lines = data.split(';');
    var series = {
        data : []
    };

    for ( var k = 0; k < lines.length; k++) {
        if (lines[k].length > 0) {
            var line = lines[k];
            var items = line.split(',');

            var myDate = new Date(Math.round(items[0] * 1000));
            series.data.push([ parseInt(Math.round(myDate.getTime())),     parseInt(Math.round(myDate.getHours())) ]);
            myDate = null;
        }
    }
    series.data.sort(function(x, y) {
        return x[0] - y[0];
    });

    options.series.push(series);
    // Create the chart
    var chart1 = new Highcharts.StockChart(options);
    chart1.redraw();

});
};
函数initHighstock(){
选项={
图表:{
zoomType:'x',
renderTo:“highstockContainer”
},
打印选项:{
系列:{
线宽:0,
标记:{
启用:对,
半径:3
},
}
},
导航器:{
已启用:false
},
亚克斯:{
分:0,,
最高:24,
间隔时间:4
},
xAxis:{
间隔时间:4
},
工具提示:{
分享:错,
格式化程序:函数(){
返回“”+Highcharts.dateFormat(“%A,%b%e,%Y',this.x)+'+'+'
'+'一天中的时间:' +这个.y; } }, 范围选择器:{ 已启用:true }, 标题:{ 文字:“日记” }, 系列:[] }; $.get('highstockData.jsp',函数(数据){ //分道扬镳 变量行=data.split(“;”); 变量系列={ 数据:[] }; 对于(var k=0;k0){ var线=线[k]; var items=line.split(','); var myDate=新日期(数学四舍五入(项目[0]*1000)); push([parseInt(Math.round(myDate.getTime()))),parseInt(Math.round(myDate.getHours())))]; myDate=null; } } 系列数据排序(函数(x,y){ 返回x[0]-y[0]; }); 选项。系列。推送(系列); //创建图表 var chart1=新的高点图表。股票图表(选项); 图1.重画(); }); };
解决方案:仅供他人参考。已经解决了。问题在于:

xAxis : {
 tickInterval : 4
 },

将xAxis强制在一个小的时间间隔上会导致所有问题。

请使用最新版本的Highchart。
通常,这种问题是由于压缩(缩小)js文件而产生的。使用highstock.src.js文件而不是highstock.js

你能在fiddle上生成示例吗?我不能在jsiddle上重现这个错误。但我可以把它放在我的网络服务器上。那会有帮助吗?