我在使用Highcharts为我自己的家庭网络构建一个小型网络应用程序(一些天气数据,耗电量等)时遇到了很大的问题。
我的用例是,我有一个24小时运行的webapp,它在一个简单的视图中显示了一些关键数据,只是数字;-) 当我单击其中一个数字/图块时,会显示带有图表的详细信息页面。我已经实现了一个自动细节机制,每隔X秒滚动一次详细信息页面。
我的问题是,我在点击图块时创建了Highcharts-Charts,当隐藏图块时,图表会被' .highcharts()。destroy();',之后对话框被销毁。
大约4-5个小时后,浏览器崩溃了('哦Snap ......')。 我分析了网站的内存使用情况,它看起来像是:
我很确定,那不应该是那样的!正如您所看到的,' c'在下面的地区,正在努力增长!
所以这里是我创建的图表:
if(typeof $(bindTo).highcharts() !== 'undefined'){
$(bindTo).highcharts().destroy();
}
// get here data with jquery from backend [jquery caching disabled]
var chart = $(bindTo).highcharts({
......
});

所以这里只是chrome-profiler的另一个细节:
我刚刚选择了其中一个蓝色条形图(这意味着,此处创建的此对象在分析过程结束时仍处于活动状态[?!])。这个蓝色条似乎包含了这个' c'对象,这属于Highcharts。
我做错了什么?这是一种已知行为吗?我怎么解决这个问题? (是的,也许我可以只创建一次图表,只更新数据,但这将是我最后的决定;-))
由于
答案 0 :(得分:3)
好,
我自己解决了这个问题。
经过长时间的调试后,我发现,在使用Highcharts的destroy-method之前,我的模态对话框已从DOM中分离出来。 因此将destroy-method放在模态对话框的隐藏侦听器中就可以了。