使用jQuery ajax加载的Highcharts IE问题

时间:2012-06-05 09:45:39

标签: jquery ajax append highcharts

我正在尝试在一个页面中显示x个不同的高亮图。每个图表都有自己的.js选项文件,它可以获取数据并进行配置。这些文件的链接嵌入在图表自己的HTML文件中,该文件包含要呈现的div。

这些图表中的每一个html文件都是根据请求通过jQuery加载到id为“reportsWindow”的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>

用于加载html页面的jQuery代码:

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(所有版本)中运行时,第一个图表未正确加载,就像中途停止加载和附加一样,但是如果我第二次请求加载报告页面显示两个图表。 图表在FF,Chrome等中完美加载。

到目前为止,我试图在追加之前使用.delay()延迟$ .each()并试图在“setTimeout()”内部调用ajax而没有成功。

OBS:graphPaths将在以后用DB输入填充,这就是我必须动态生成图表的原因。图表对象也有唯一的名称。图表生成代码在$(document).ready()。

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

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

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

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