何时高架图完全加载?

问题描述 投票:23回答:5

我看到了这段代码: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]     
    }]
});

});

jquery highcharts
5个回答
22
投票

Highcharts具有回调功能

 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');

});

8
投票

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

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

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


8
投票

尝试使用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参考的重绘事件:qazxsw poi

和演示:http://api.highcharts.com/highcharts#chart.events.redraw


2
投票

这得到了回答,但并不够重要。 Highcharts文档明确说明

...在大多数情况下,图表是在一个线程中构建的,但在Internet Explorer 8或更低版本中,图表有时会在文档准备好之前启动,在这些情况下,图表对象在调用http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/chart/events-redraw/后不会直接完成。因此,依赖于新构建的Chart对象的代码应始终在回调中运行。

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

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

this

0
投票

在角度项目中,我不得不使用chart1 = new Highcharts.Chart(options, function(){ this.showLoading(); }); 函数来使宽度正常工作,如下所示:

setTimeout()
© www.soinside.com 2019 - 2024. All rights reserved.