什么时候高音图完全加载?

我看到了这段代码: http : //jsfiddle.net/AVygG/

我很好奇高桥图完全加载的时候了吗? 我在highcharts文档中看到事件:load:应该能够在高亮度图完全加载时调用回调函数。

如果它被完全加载,那么我可以假设当警报弹出时var图表应该已经有了值吗? 这是图表已加载的良好基础吗?

我问的原因是我正在处理另一个代码,高清显然没有在IE8中完全加载。 看起来highcharts可能在加载其元素时遇到竞争条件。

谢谢!

$(function () { // create the chart var chart = new Highcharts.Chart({ chart: { renderTo: 'container', events: { load: function(event) { alert ('Chart loaded'); } } }, xAxis: { }, series: [{ animation: false, data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] }] }); 

});

Highcharts具有回调function

  var chart = new Highcharts.Chart({ chart: { renderTo: 'container', events: { redraw: function(event) { alert ('Chart loaded'); } } }, series: [{ animation: false, data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] }] },function(chart){ alert('LOADED'); }); 

在加载回调函数中,您可以使用“this”指针访问图表对象。

  events: { load: function(event) { alert ('Chart loaded with series :'+ this.series[0].name); console.log(this); } } 

JsFiddle: http : //jsfiddle.net/msjaiswal/AVygG/25/

尝试redraw事件。 加载后会触发此事件,但也会在添加系列并调整图表大小后触发。

 $(function () { // create the chart var chart = new Highcharts.Chart({ chart: { renderTo: 'container', events: { redraw: function(event) { alert ('Chart loaded'); } } }, series: [{ animation: false, data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] }] }); }); 

来自官方Highcharts参考的重绘事件: http : //api.highcharts.com/highcharts#chart.events.redraw

和演示: http : //jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/chart/events-redraw/

这个问题得到了回答,但并不足够。 Highcharts文档明确说明

…在大多数情况下,图表是在一个线程中构建的,但在Internet Explorer 8或更低版本中,图表有时会在文档准备好之前启动,在这些情况下,图表对象在调用new Highcharts.Chart()后不会直接完成new Highcharts.Chart() 。 因此,依赖于新构建的Chart对象的代码应始终在回调中运行。

因此,在IE8中处理图表对象必须在回调中完成 ,即new Highcharts.Chart(options, function(chart) { ... }) 。 您还可以使用function() { ... }并在函数中使用this

关于您的具体关注重新加载消息。 我不得不在回调中做到这一点,但它确实有效。

 chart1 = new Highcharts.Chart(options, function(){ this.showLoading(); });