0

document.domain プロパティを変更すると、Internet Explorer (バージョン 8 以降) で Google Charts が機能しなくなるようです。以下は、問題を示す非常に単純なページです。サンプル コードは、Google Charts ライブラリ サンドボックスからほぼそのまま使用できます。唯一の大きな違いは、document.domain を設定する以前の JavaScript を追加したことです。

「test.example.com」などのサブドメインに取り組んでおり、他の理由から、document.domain プロパティを「example.com」だけに設定する必要があります。これはチャートを壊します。「お使いのブラウザはグラフをサポートしていません」とだけ表示されます。

document.domain を "test.example.com" に設定しても (正確にはデフォルトです)、グラフは機能しません。私が知る限り、Google Charts は IE8 で iframe を作成しており、document.domain をまったく変更することで、同じオリジンのセキュリティ ポリシーをトリガーしています。

私は Google ライブラリを制御していないため、iframe 自体に document.domain を設定できません (JavaScript を使用している上部ページからアクセスする権限がないため)。document.domain を変更する機能を維持しながら、この問題を解決する方法についてのアイデアはありますか?

<!DOCTYPE html>
<html>
  <head>
    <script type="text/javascript">
        document.domain = "example.com";
    </script>
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">
      google.load("visualization", "1", {packages:["corechart"]});
      google.setOnLoadCallback(drawChart);
      function drawChart() {
        var data = google.visualization.arrayToDataTable([
          ['Year', 'Sales', 'Expenses'],
          ['2004',  1000,      400],
          ['2005',  1170,      460],
          ['2006',  660,       1120],
          ['2007',  1030,      540]
        ]);

        var options = {
          title: 'Company Performance',
          hAxis: {title: 'Year', titleTextStyle: {color: 'red'}}
        };

        var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
        chart.draw(data, options);
      }
    </script>
  </head>
  <body>
    <div id="chart_div" style="width: 900px; height: 500px;"></div>
  </body>
</html>
4

1 に答える 1

0

根本原因の解決にはまだ至っていません。しかし、最終的には、document.domain プロパティの設定を、Google チャートがページにレンダリングされるまで押し戻すだけでした。これで問題なく document.domain を設定できます。

ページにグラフを動的に追加/削除する場合、明らかにこれは機能しませんが、ほとんどの場合は機能するはずです。

于 2013-12-08T03:01:21.573 に答える