0

在这里,我正在尝试使用 javascript 在单击按钮时将融合图表捕获为图像。
这是我的javascript代码:

var initiateExport = false;

        function exportCharts() {
            var exportFormat = 'JPG';
            initiateExport = true;
            for (var chartRef in FusionCharts.items) {
                if (FusionCharts.items[chartRef].exportChart) {
                    document.getElementById("linkToExportedFile").innerHTML = "Exporting...";
                    FusionCharts.items[chartRef].exportChart({ "exportFormat": exportFormat });

                }
                else {

                    document.getElementById("linkToExportedFile").innerHTML = "Please wait till the chart completes rendering...";
                }
            }
        }

        function FC_Exported(statusObj) {
            if (initiateExport) {
                initiateExport = false;
                document.getElementById("linkToExportedFile").innerHTML = "";
            }

            if (statusObj.statusCode == "1") {

                document.getElementById("linkToExportedFile").innerHTML += "Export successful. View it from <a target='_blank' href='" + statusObj.fileName + "'>here</a>.<br/>";
            }
            else {
                document.getElementById("linkToExportedFile").innerHTML += "Export unsuccessful. Notice from export handler : " + statusObj.notice + "<br/>";

            }
        }

问题是在图像捕获之前,进度条显示“正在捕获数据”。我想绕过它(因为我有另一个代码在等待它完成),以便直接在按钮上单击生成图像。如果它不可能通过javascript 有人可以建议使用c#的方法吗?

4

1 回答 1

0

本质上,这些 Flash 图表需要一些时间来完成从图表的 Flash 显示中捕获图像数据。它不能在一个实例中完成。

这就是为什么出现进度条的原因,它指示图像数据捕获的进度。

您可以在图表的 XML 中隐藏进度条设置showExportDialog="0"。但是,内部进展将继续。

图像捕获完成后,如果您使用服务器端导出,Flash 会将数据发布到服务器端脚本(导出处理程序)。

如果您使用客户端导出功能,Flash 图表会引发名为 FC_ExportDataReady 的事件。您可以在窗口/全局范围内侦听此事件定义具有相同名称的函数。此事件以 JavaScript 对象的形式提供图像数据(流)。流对象包含 RLE 格式的图像数据以及图像的元数据。

因此,不可能通过单击按钮立即生成图表的图像快照。这需要一些时间。

That is the reason why the FC_Exported calback event is provide so that you can listen to this event and and get a confirmation of the completion and then carry on with your own code.

于 2012-06-29T14:05:09.153 回答