2012-06-05 74 views
1

我试图在单个页面中显示x个不同的高图。每个图表都有自己的.js选项文件,用于获取数据并进行配置。这些文件的链接嵌入在图表自己的HTML文件中,该文件包含要呈现的div。Highcharts IE问题jQuery ajax加载

每个图表的HTML文件时加载到通过jQuery的与 “reportsWindow” 的ID的DIV(见下面的代码)

HTML页面布局要求:

<script type="text/javascript" src="/graf/revenue/revenueGraphScript.js"></script> 
<div class="clear"> 
    <div id="revenue" style="width: 600px; height: 200px;"></div> 
</div> 

jQuery的代码加载HTML网页:

var graphPaths = { 
    'revChart': '/graf/revenue/revenueChart.html', 
    'revDisChart': '/graf/revenueDistribution/revenueDistributionChart.html' 
} 

$.each(graphPaths, function(index, value){ 
    $.ajax({url: value, dataType: "html", success: function(data){ 
     $('#reportsWindow').append(data); 
    }});   
}); 

的问题是,当代码在IE(所有版本)的第一个图表装入不正确运行,这是因为如果在装载和appendi ng在中途停止,但是如果我再次请求加载报告页面,则会显示两个图表。 图表加载完美的FF,铬等

我到目前为止试图推迟$ .each()与.delay()就在append之前,并试图有ajax调用内“setTimeout ()“ 没有成功。

OBS:graphPaths将在以后使用数据库输入填充,这就是为什么我必须动态生成图表的原因。此外,图表对象具有唯一的名称。而图表生成代码位于$(document).ready()内部。

我在寻找的东西是这样的:Create six chart with the same rendering,different data (highchart) 但是我使用了不同的图表,其中的例子是用相同的图表。

有什么建议吗?

回答

1

当在一个页面上动态加载多个图表时,IE显然存在问题。通过从库中删除以下代码来解决问题

// setup default css 
     doc.createStyleSheet().cssText = 
      'hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke' + 
      '{ behavior:url(#default#VML); display: inline-block; } ';