使用easyui的tab插件,当fusionchart初始化使用url时,切换标签,fusioncharts会重新加载,并可能导致加载数据失败。这种情况只出现在firefox浏览器中,在IE和Chrome下没有问题。代码如下:
var chart = new FusionCharts("../bi/charts/MSColumn3DLineDY.swf", "chartId", "400", "200", "0", "0"); chart.setJSONUrl("/ycwa-webapp/WAHF/WAHF50/chart.json"); chart.render("chart1");
后来将代码改为:
var chart = new FusionCharts("../bi/charts/MSColumn3DLineDY.swf", "chartId", "400", "200", "0", "0"); $.get('/ycwa-webapp/WAHF/WAHF50/chart.json?funCode=WAHF20&nodeKey=WAHF50&cyear='+$("#cyear").val()+'&cmonth='+$("#cmonth").val(),{},function(d,s){ chart.setJSONData(d); chart.render("chart1"); },'json');
问题解决。导致该问题的原因是,easyui的tab隐藏时会设置display:none,FireFox会卸载掉fusioncharts的swf,当重新切换到tab时,fusioncharts会重新加载。解决该问题的思路是,在初始化swf时,不要使用url获取数据,改为使用js常量。