24

私はこのコードを見ました:http://jsfiddle.net/AVygG/

ハイチャートが完全にロードされるポイントはいつですか?highchartsのドキュメントで、events:load:は、highchartが完全にロードされたときにコールバック関数を呼び出すことができるという魔法を実行する必要があることを確認しました。

完全に読み込まれた場合、アラートが表示されたときにvarチャートにすでに値が含まれていると想定できますか?それはチャートがすでにロードされているという良い根拠ですか?

私が尋ねた理由は、ハイチャートがIE8に完全にロードされていないように見える別のコードに取り組んでいるためです。ハイチャートは、その要素のロードで競合状態になっている可能性があるようです。

ありがとう!

$(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]     
    }]
});

}); </ p>

4

6 に答える 6

8

load コールバック関数では、"this" ポインターを使用してチャート オブジェクトにアクセスできます。

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

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

于 2013-04-24T11:27:30.757 に答える
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 リファレンスからイベントを再描画: 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/

于 2013-01-19T12:36:37.543 に答える
3

これは答えられましたが、明らかに十分ではありません。ハイチャートのドキュメントによると

... ほとんどの場合、グラフは 1 つのスレッドで作成されますが、Internet Explorer バージョン 8 以下では、ドキュメントの準備が整う前にグラフが開始されることがあり、このような場合、 を呼び出した直後にグラフ オブジェクトが終了しませんnew Highcharts.Chart()。結果として、新しく構築された Chart オブジェクトに依存するコードは、常にコールバックで実行する必要があります。

したがって、IE8 でのチャート オブジェクトの処理は、コールバックで行う必要がありnew Highcharts.Chart(options, function(chart) { ... })ます。function() { ... }関数で使用して使用することもできthisます。

あなたの特定の懸念に関しては、読み込み中のメッセージです。コールバックでそれをしなければなりませんでしたが、うまくいきました。

chart1 = new Highcharts.Chart(options, function(){
  this.showLoading();
});
于 2015-02-13T00:04:15.780 に答える