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 以降でサポートされています。IE 6 ~ 8 は、Google の excanvas.js ライブラリを通じてサポートされています。

あなたは言った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 に答える