2012-03-20 23 views
8

लोड हो रहा है, मैं कुछ वेब पृष्ठों में Google के चार्ट दिखा रहा हूं। लेकिन मैं आश्वस्त नहीं कर सकता कि मेरे ग्राहकों के पास Google तक नेटवर्क पहुंच होगी: क्लाइंट कंप्यूटर मेरे वेब सर्वर (जो Google तक पहुंच सकता है) के समान लैन में होगा, लेकिन मुझे गारंटी नहीं है कि सभी क्लाइंट LAN के बाहर पहुंच पाएंगे ।मुझे कैसे पता चलेगा कि Google विज़ुअलाइज़ेशन

मैं उन ग्राहकों को Google चार्ट का उपयोग करके डेटा दिखाना चाहता हूं जो इसे एक्सेस कर सकते हैं, और उन लोगों को एक सादा HTML तालिका नहीं है जो नहीं करते हैं।

मैं गलत पर एक चर की स्थापना, और एक विधि है जब गूगल विज़ुअलाइज़ेशन API भरी हुई है कहा जाता है में सच करने के लिए इसे बदलने की कोशिश की:

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) लाइन से पहले google.load(?, ?, canAccessGoogleVisualization); विधि canAccessGoogleVisualization() कॉल निष्पादित किया जा रहा है।

मैं कैसे सुनिश्चित करूँ canAccessGoogleVisualizationVar के बाद का मूल्य पढ़ रहा हूँ google.load(...); करने के लिए कॉल निष्पादित करने के लिए कोशिश कर हो सकता है?

+0

अधिक जानकारी के साथ सवाल अपडेट किया गया। –

+0

इसके लायक होने के लिए, जीवीआईएस जेएस और सीएसएस लेना संभव है, और जहां भी यह आंतरिक ऐप है वहां से इसे केवल सेवा दें। कई चार्ट क्लाइंट साइड किए जाते हैं, और इस प्रकार इस तरह से ठीक काम करेंगे (मैंने इसे किया है)। जब आप एपीआई को सामान्य के रूप में लोड करते हैं तो बस बाहर जाने वाली नेटवर्क कॉल देखें और आप अपनी आवश्यक फ़ाइलों को देख सकते हैं। यह ध्यान देने योग्य है कि ए) कोड को छोटा कर दिया जाएगा और बी) आपको मैन्युअल रूप से इसे बदलने के बिना कोड में कोई अपडेट नहीं मिलेगा, लेकिन यह एक विकल्प हो सकता है :) – oli

+0

धन्यवाद @ पीटर, मैं इसे आज़मा रहा हूं। तथ्य यह है कि यदि कोड मैन्युअल रूप से परिवर्तित नहीं होता है तो कोड अपडेट नहीं किया जाएगा (इस मामले में)। –

उत्तर

8

आप कोशिश कर सकते हैं

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

यह स्वीकार्य उत्तर होना चाहिए। – C0ZEN

संबंधित मुद्दे