0

得到了一系列有关在 IE7 中运行 JavaScript 的兼容性问题的问题。我正在使用 jqplot 生成图形,在 Chrome 和 IE8 中运行良好,但在 IE7 中不起作用。

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

代码和演示

<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>
​
4

3 回答 3

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

于 2012-08-31T17:26:58.473 回答
0

文档

canvas 标签和 jqPlot 在大多数浏览器上都能正常工作。jqPlot 使用的所有画布功能都支持 Firefox 3.5+、Safari 4+、Chrome 8.0+、Opera 10+ 和 IE 9+。Google 的 excanvas.js 库支持 IE 6 - 8。

你说excanvas.js图书馆吗?如果您这样做,更多功能可能会起作用。

于 2012-08-31T17:20:41.887 回答
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 -->
于 2012-08-31T17:27:14.527 回答