2012-03-20 2 views
8

일부 웹 페이지에 Google 차트가 표시됩니다. 하지만 내 고객이 Google에 네트워크 액세스 권한을 부여 할 수는 없습니다. 클라이언트 컴퓨터는 Google 웹 서버 (Google에 액세스 할 수 있음)와 동일한 LAN에 있지만 모든 클라이언트가 LAN 외부에서 액세스 할 수 있다고 보장 할 수는 없습니다. .Google 시각화가로드되었는지 어떻게 알 수 있습니까?

Google Charts를 사용하여 데이터에 액세스 할 수있는 고객에게 데이터를 보여주고 싶지 않은 사용자에게 일반 HTML 테이블을 보여주고 싶습니다.

나는 false로 변수를 설정, 및 Google 시각화 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

관련 문제