FusionCharts is using Adobe's ExternalInterface API to communicate between JavaScript and the SWF chart when you use FusionCharts.js to do things like setDataXML. For some reason, ExternalInterface isn't working correctly on IE under some conditions; the method simply doesn't exist on the OBJECT element. I happen to be using the ExtJS library with GWT; either framework may be doing some DOM manipulations under the covers that are freaking out Adobe--but I haven't verified this.
A couple things to try:
- Ensure that the ID and name attributes of the OBJECT and/or EMBED tags do not have characters such as . (period), -, +, *, /, and \. Amusingly, this is because Adobe's ExternalInterface API is using a bunch of eval() JavaScript methods and these special characters get interpreted as JavaScript operators. Yeah, great work, Adobe.
- Hook up the ExternalInterface functions you need manually. For example, here's the modified setDataXML function in FusionCharts.js to do the trick (code in red has been added):
setDataXML: function(strDataXML){
//If being set initially
if (this.initialDataSet==false){
//This method sets the data XML for the chart INITIALLY.
this.addVariable('dataXML',strDataXML);
//Update flag
this.initialDataSet = true;
}else{
//Else, we update the chart data using External Interface
//Get reference to chart object
var chartObj = infosoftglobal.FusionChartsUtil.getChartObject(this.getAttribute('id'));
if (!chartObj.setDataXML)
{
__flash__addCallback(chartObj, "setDataXML");
}
chartObj.setDataXML(strDataXML);
}
},