Я показываю диаграммы Google на некоторых веб-страницах.Но я не могу гарантировать, что мои клиенты будут иметь сетевой доступ к Google: клиентский компьютер будет находиться в той же локальной сети, что и мой веб-сервер (который может обращаться к Google), но я не гарантирую, что все клиенты будут иметь доступ за пределами локальной сети.
Я хотел бы показать данные с помощью Google Charts тем клиентам, которые могут получить к ним доступ, и обычную таблицу HTML для тех, кто этого не делает.
Я попытался установить для переменной значение falseи изменив его на true в методе, вызываемом при загрузке API визуализации Google:
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);
}
Я заметил, что мой код не работает, потому что, если canAccessGoogleVisualizationVar == true
, ветвь if
не будет взята, а если ее false
, function drawVisualization()
не будет выполнен.
Итак, я взял тест if вне функции:
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(...);
?