2012-03-20 9 views
8

私はいくつかのウェブページにGoogleのチャートを表示しています。しかし私はクライアントにGoogleへのネットワークアクセスを保証することはできません。クライアントコンピュータは私のウェブサーバー(Googleにアクセスできる)と同じLANにありますが、クライアントのすべてがLAN外でアクセスできる保証はありません。Googleビジュアライゼーションがロードされているかどうかを知るには

Google Chartsを使用してアクセスできるクライアントにデータを表示し、そうでないユーザーにプレーンなHTMLテーブルを表示したいとします。

私はfalseに変数を設定する、とGoogle Visualization APIがロードされたときに呼び出されるメソッドでtrueに変更してみました:

var canAccessGoogleVisualizationVar = false; 
google.load('visualization', '1', {packages: ['corechart'], callback: canAccessGoogleVisualization}); 
function canAccessGoogleVisualization() 
{ 
    canAccessGoogleVisualizationVar = true; 
} 

しかし、動作するようには思えません。

Googleビジュアライゼーションがアクセシブルであるかどうかをクライアント側からどのように知ることができますか?


更新:上記のコードが原因(私は意味がないと思ったとして前に投稿していなかった)次のコードで動作しませんでした:

google.setOnLoadCallback(drawVisualization); 

function drawVisualization() 
{ 
    // Check if Google Visualization is loaded 
    if (!canAccessGoogleVisualizationVar) { 
     alert('Can't access Google Visualization'); 
    } 

    // The following code can be any of the samples from Google (see http://code.google.com/apis/ajax/playground/?type=visualization#pie_chart). 
    var data = new google.visualization.DataTable(); 
    // Add columns and values to data 
    ... 
    // Call new google.visualization.AnyChartBuilderFromTheAPI(<element>).draw(data); 
} 

私は自分のコードのdidnに気づきましたcanAccessGoogleVisualizationVar == trueの場合はifブランチが作成されず、falseの場合はfunction drawVisualization()が実行されていない可能性があります。

だから私は、関数の外であれば、テストを受けた:

google.setOnLoadCallback(drawVisualization); 

function drawVisualization() 
{ 
    // Any drawVisualization unchanged from the samples from Google (see http://code.google.com/apis/ajax/playground/?type=visualization#pie_chart). 
} 

// Check if Google Visualization is loaded at the end of this <script> </script> 
if (!canAccessGoogleVisualizationVar) { 
    alert('Can't access Google Visualization'); 
} 
</script> 

しかし、評価if (!canAccessGoogleVisualizationVar)は、メソッドを呼び出しcanAccessGoogleVisualization()google.load(?, ?, canAccessGoogleVisualization);の前の行を実行されているので、今では働いていません。

どのように私は私が後canAccessGoogleVisualizationVarの値を読んでいるgoogle.load(...);への呼び出しを実行しようとしたことを確認することができますか?

+0

は、より多くの情報と質問を更新してみてください。 –

+0

それは価値があるため、gviz jsとcssを利用して、この内部アプリがどこからでも提供できます。チャートの多くはクライアントサイドで行われているので、この方法でうまくいく(私がやった)。通常のようにAPIを読み込んだときに出てくるネットワークコールを見て、必要なファイルを見ることができます。 a)コードが縮小され、b)コードを手動で変更せずにコードを更新することはありませんが、オプションである可能性があります:) – oli

+0

ありがとう@peter、私はそれを試しています。コードを手動で変更しないとコードが更新されないという事実はプラス(この場合)です。 –

答えて

8

あなたは

function canAccessGoogleVisualization() 
{ 
    if ((typeof google === 'undefined') || (typeof google.visualization === 'undefined')) { 
     return false; 
    } 
    else{ 
    return true; 
    } 
} 
+1

それは受け入れられた答えでなければなりません。 – C0ZEN

関連する問題