2012-08-31 61 views
0

在IE7中遇到了一系列与运行JavaScript的兼容性问题有关的问题。我使用jqplot来生成数字,这在Chrome和IE8中效果很好,但在IE7中无法使用。jqplot在IE7中无法正常工作

为了诊断,我只运行最简单的代码$.jqplot('chart1', s1),它在IE7中工作。所以我认为问题是关于所有选项(除了传说)。任何人都可以给我一些建议吗? IE7只接受某种类型的语法吗?

CODE和Demo

<div id="chart1" style="margin-top:20px; margin-left:20px; width:650px; height:400px;"></div> 
<!--[if lt IE 9]> 
<script src="http://www.prioritymarketers.com/jqplot/src/excanvas.min.js"></script> 
<![endif]-->​ 

<script> 
$.jqplot.config.enablePlugins = true; 

var ms= 2 
var s1 =[[5.0, 23.0, 131.0, 779.0, 4667.0, 27995.0, 167963.0, 1007771.0, 6046619.0, 36279707.0], [13.0, 85.0, 517.0, 3109.0, 18661.0, 111973.0, 671845.0, 4031077.0, 24186469.0, 145118821.0]] 

L = [{label: 'Stage 1'}]; 

var i = 2 
while (i <= ms) { 
    L.push({label: 'Stage' + i}); 
    i++; 
} 

$.jqplot('chart1', s1, { 

    seriesDefaults: { 
     showMarker: false, 
     pointLabels: { 
      show: false 
     }, 
    }, 

    series: L, 
    axes: { 
     xaxis: { 
      label: 'Time units', 
      pad: 0, 
     }, 
     yaxis: { 
      label: 'Number of individuals', 
      labelRenderer: $.jqplot.CanvasAxisLabelRenderer, 
      pad: 0 
     } 
    }, 
    legend: { 
     show: true, 
     location: 'nw', 
     placement: 'inside', 
     fontSize: '11px' 
    } 
}) 
</script> 
​ 
+0

一个打开一个你的选择,直到它打破了:P – jbabey

+0

互联网不在IE7中工作得很好... – Timm

+0

@jbabey:测试过。只有传说选项适用... –

回答

2

我注意到,当一组选项中的最后一个元素之后有逗号时,IE并不是一个很大的粉丝。

例:

此:

seriesDefaults: { 
     showMarker: false, 
     pointLabels: { 
      show: false 
     }, 
    }, 

将成为:

seriesDefaults: { 
    showMarker: false, 
    pointLabels: { 
     show: false 
    }}, 

一个微妙的差异,但它可能会或可能不会解决您的问题。

试着改变你的绘图功能到:

$.jqplot('chart1', s1, { 

    seriesDefaults: { 
     showMarker: false, 
     pointLabels: { 
      show: false 
     } 
    }, 

    series: L, 
    axes: { 
     xaxis: { 
      label: 'Time units', 
      pad: 0 
     }, 
     yaxis: { 
      label: 'Number of individuals', 
      labelRenderer: $.jqplot.CanvasAxisLabelRenderer, 
      pad: 0 
     } 
    }, 
    legend: { 
     show: true, 
     location: 'nw', 
     placement: 'inside', 
     fontSize: '11px' 
    } 
}) 

此外,我用excanvas最后一次,我最后不得不以确保它是最新版本。

链接:http://code.google.com/p/explorercanvas/downloads/list

+0

谢谢!这是','问题! –

+0

我最近在使用Flot时遇到了同样的问题。这确实是一个痛苦的想法。很高兴帮助! =) – Chase

+0

你比较了Jqplot和Flot或类似的东西,如谷歌情节? –

0

the docs

canvas标签和jqPlot大多数浏览器上运行良好。所有canvas jqPlot使用的功能在Firefox 3.5+,Safari 4+, Chrome 8.0+,Opera 10+和IE 9+上受支持。 Google的excanvas.js库支持通过 支持IE 6-8。

你有说excanvas.js库吗?如果你这样做了,更多的功能可能会起作用。

+0

我已经包含“<! - [if lt IE 9]> ”in my HTML。但它并没有解决问题... –

+0

如果我是你,我会很高兴它的工作原理,文档清楚地表明,所有功能的工作在IE9 +,而不是IE7 – jbabey

+0

感谢您的评论。蔡斯帮助我发现这是逗号问题。 –

0

是否与你的其他版本的IE工作?我有类似的问题,但在我的情况下,它不适用于IE7和IE8。我不记得我是如何修复它的。

如果检查jquery.jqplot.js有一个线,确保版本低于IE9使用excanvas.js

确保有一行如下

* > <!--[if lt IE 9]><script language="javascript" type="text/javascript" src="excanvas.js"></script><![endif]--> 

否则试试包含文件在这个序列

<link rel="stylesheet" type="text/css" href="../libs/jqplot/jquery.jqplot.css" /> 

<!--[if lt IE 9]><script language="javascript" type="text/javascript" src="../libs/jqplot/excanvas.js"></script><![endif]--> 

    <!-- BEGIN: load jqplot --> 
    <script language="javascript" type="text/javascript" src="../libs/jqplot/jquery.jqplot.js"></script> 
    <script language="javascript" type="text/javascript" src="../libs/jqplot/jqplot.barRenderer.js"></script> 
    <script language="javascript" type="text/javascript" src="../libs/jqplot/jqplot.pieRenderer.js"></script> 
    <script language="javascript" type="text/javascript" src="../libs/jqplot/jqplot.highlighter.js"></script> 
    <script language="javascript" type="text/javascript" src="../libs/jqplot/jqplot.pointLabels.js"></script> 

    <script language="javascript" type="text/javascript" src="../libs/jqplot/jqplot.canvasTextRenderer.js"></script> 
    <script language="javascript" type="text/javascript" src="../libs/jqplot/jqplot.categoryAxisRenderer.js"></script> 
    <script language="javascript" type="text/javascript" src="../libs/jqplot/jqplot.canvasAxisLabelRenderer.js"></script> 

    <!-- END: load jqplot --> 
+0

感谢您的建议。我将清理我的代码的开始部分。在我的情况下,问题是由最后一个元素后面的逗号引起的 –

相关问题