FusionCharts 3.2.1 - FusionCharts._fallbackJSChartWhenNoFlash()不起作用

时间:2012-04-05 13:59:47

标签: javascript extjs fusioncharts

我正在使用FusionCharts 3.2.1,并且我想在浏览器中未安装Flash播放器时在javascript中呈现图表。我正在调用FusionCharts._fallbackJSChartWhenNoFlash()方法,但没有任何反应。

   function updateChart(chartDataJSON) {
        FusionCharts._fallbackJSChartWhenNoFlash();
            var currentSwfName = 'MSCombi2D.swf';
            if (chartDataJSON.swfName) {
                currentSwfName = chartDataJSON.swfName;
            }
            if (prevSwfName != currentSwfName) {
                prevSwfName = currentSwfName;
                var contextPath = document.getElementById('contextPath').value;  
                var swfUrl = contextPath + '/charts/' + currentSwfName;

                if (FusionCharts('residenceChart')) {
                    FusionCharts('residenceChart').dispose();
                }

                new FusionCharts({
                    id: 'residenceChart',
                    swfUrl:swfUrl,
                    renderAt:'consumptionChartDiv',
                    dataFormat:'json',
                    dataSource: chartDataJSON,
                    registerWithJS: 1,
                    width: 730,
                    height: 300,
                    debugMode: 0
                }).render();
            } else {
                FusionCharts('residenceChart').setJSONData(chartDataJSON);
            }
}

2 个答案:

答案 0 :(得分:1)

您是否强制要求坚持使用FusionCharts 3.2.1?如果您升级到最新版本(如果您已经是客户则免费),此问题将得到解决。

FusionCharts 3.2.2 以来,当Flash Player不可用时,该组件会自动呈现JavaScript图表,您无需显式调用FusionCharts._fallbackJSChartWhenNoFlash();实际上,此方法已从最新的API。

但是,如果您仍然希望坚持v3.2.1,我建议您首先查看以下内容:

  1. 确保您拥有随FusionCharts包提供的所有随附JavaScript文件,并保存在`FusionCharts.js``文件旁边。
  2. 因为JavaScript图表需要额外的JS文件,所以在需要时会动态加载它们。但是,你的案件可能会失败;尝试手动将JavaScript文件添加到页面头发布包含FusionCharts.js
  3. 如果您的浏览器调试/ js控制台上有任何JavaScript错误,请从错误消息中查找提示。 FusionCharts文档和产品论坛可以帮助您找出错误消息的原因。
  4. 作为预防措施,请确保通过JSON传递的swfName是正确的。 FusionCharts 3.2.1 JavaScript图表存在swfUrl区分大小写的问题。

答案 1 :(得分:-2)

似乎FusionCharts构造函数的参数不正确。

来自FusionCharts Documentation

var myChart = new FusionCharts("FusionCharts/Column3D.swf", "myChartId", "400", "300", "chartContainer", {dataFormat : "json", dataSource : chartDataJSON});

以上代码应该适合您。