FusionCharts嵌入页面的两种方式

郭文睿 2011-03-03

一:直接的HTML代码(如下所示)来嵌入图表:

<html>

...

<objectclassid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"width="900"height="300"id="Column3D">

<paramname="movie"value="../FusionCharts/Column3D.swf"/>

<paramname="FlashVars"value="&dataURL=Data.xml">

<paramname="quality"value="high"/>

<embedsrc="../FusionCharts/Column3D.swf"flashVars="&dataURL=Data.xml"quality="high"width="900"height="300"name="Column3D"type="application/x-shockwave-flash"pluginspage="http://www.macromedia.com/go/getflashplayer"/>

</object>

...

</html>

正如上面你所见到的,我们使用<OBJECT>和<EMBED>标记在HTML页面中来嵌入图表.这种嵌入方式我们称之为直接的HTML嵌入式.

然而,在最近的更新中使用IE浏览器处理ActiveX对象(Flash是ActiveX对象),最终用户将首先需要单击该图表以激活它。下面是一个例子所示:

直到用户点击图表后,他才能进行交互图表工作即使用工具提示和链接。这有可能在你图表链接中误导你。.

二:JavaScript解决方案

由于上述的“点击激活的解决办法...”问题,您需要在您的HTML网页中使用JavaScript嵌入FusionCharts.当您使用JavaScript来写一个ActiveX对象的标记,InternetExplorer中不显示上述边界和消息,并且对象也不需要通过点击激活。

为了方便起见,我们已经提供了一个叫做FusionChartdeJavascript类,它可以帮助你以一种用户友好的方式工作。这个类在下载包>JSClass文件夹中。这个文件名为FusionCharts.js.

我们不会讨论这个类的技术细节。如果你对此感兴趣,你可以直接查看这个JavaScript类的源文件。这里我们会看到使用这个类的例子.

现在让我们以修改我们以前三维柱状图(我的第一个图表)为例,使用此JavaScript类嵌入图表.

用FusionCharts.js全局访问

由于你包含FusionCharts的网页现在需要使用JavaScript类,把JS文件放在根目录是个好主意,因为它是全局可访问的.我们复制此文件到我们上一个创建的FusionCharts文件夹中,其中已经包含了SWF图表文件。复制到这里可以确保所有的图表和这个JS文件能从这个核心位置被所有页面访问。

在HTML页面中使用这个类

现在我们来修改我们的HTML页面来使用这个类来嵌入图表.

创建一个Chart.html的副本并另存为JSChart.html,并把它们保存在同一个文件夹中。进行下面的改动:

<html>

<head>

<scriptlanguage="JavaScript"src="../FusionCharts/FusionCharts.js"></script>

</head>

<bodybgcolor="#ffffff">

<divid="chartdiv"align="center">ThechartwillappearwithinthisDIV.Thistextwillbereplacedbythechart.</div>

<scripttype="text/javascript">

varmyChart=newFusionCharts("../FusionCharts/Column3D.swf","myChartId","900","300","0","0");

myChart.setDataURL("Data.xml");

myChart.render("chartdiv");

</script>

</body>

</html>

在这里,我们首先包括FusionCharts的JavaScript类文件:

<scriptlanguage="JavaScript"src="../FusionCharts/FusionCharts.js"></script>

创建一个具有为ID的DIV(上面这个例子中叫chartdiv).

<divid="chartdiv"align="center">...</div>

图表实例使用以下代码:

varmyChart=newFusionCharts("../FusionCharts/Column3D.swf","myChartId","900","300","0","0");

在这里,myChart是JavaScript对象的名字,它包含到我们的图表中.

我们使用如下的参数:

我们打算使用swf文件的URL来指定图表类型

为图表指定ID,你可以为图表指定任意ID.只要确保如果你在一个HTML页面中使用多个图表,每个图表都具有唯一的ID

指定图表的宽高.

最后两个参数是debugMode和registerWithJS,一般设置为0。我们将稍后解释这些参数.

为图表传递XML数据路径使用下面的方式:

myChart.setDataURL("Data.xml");

最后通过调用类的render()方法,指定图表想要显示的DIV的ID来进行渲染.

myChart.render("chartdiv");

现在当你在IE中运行这个页面,你会看到同样的3D柱状图-但是没有“点击激活”的信息.此外,你也无须点击此图表来激活。

相关推荐