canAccessGoogleVisualizationVar

canAccessGoogleVisualizationVar

我正在某些网页上显示Google的图表。但是我不能保证我的客户可以访问Google的网络:一台客户计算机与我的Web服务器(可以访问Google)位于同一局域网中,但是我不能保证所有的客户都可以在LAN之外访问。

我想使用Google图表向可以访问该数据的客户显示数据,并向不能访问这些数据的用户显示普通的HTML表。

我尝试将变量设置为false,然后在加载Google Visualization API时通过一种方法将其更改为true:

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

但这似乎不起作用。

我如何从客户端知道Google Visualization是否可以使用?

更新:由于以下代码(我之前没有发布过,因为我认为没有意义),因此上面的代码无法正常工作:
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);
}

我注意到我的代码不起作用,因为,如果不采用canAccessGoogleVisualizationVar == true,则不采用if分支,如果不采用false,则不执行function drawVisualization()

因此,我在函数之外进行了if-test:
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(...); 的值?

最佳答案

你可以试试

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

10-06 07:56