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>