在这里,我尝试使用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#?
的方法答案 0 :(得分:0)
基本上,这些Flash图表需要一些时间来完成从图表的flash显示中捕获图像数据。它不能在一个实例中完成。
这就是进度条出现的原因,它指示了图像数据捕获的进度。
您可以在图表的XML中隐藏进度条设置showExportDialog="0"
。但是,内部进展将继续下去。
完成映像捕获后,如果使用服务器端导出,则Flash会将数据发送到服务器端脚本(导出处理程序)。
如果您使用的是客户端导出功能,则Flash图表会引发名为FC_ExportDataReady的事件。您可以在window / global范围内侦听定义具有相同名称的函数的此事件。此事件将图像数据(流)作为JavaScript对象提供。流对象包含RLE格式的图像数据和图像的元数据。
因此,无法使用按钮点击立即生成图表的图像捕捉。这需要一些时间。
这就是提供FC_Exported calback事件的原因,以便您可以收听此事件并获得完成确认,然后继续使用您自己的代码。