Tôi đang hiển thị biểu đồ của Google trong một số trang web hay không. Nhưng tôi không thể đảm bảo rằng khách hàng của mình sẽ có quyền truy cập mạng vào Google: máy tính của khách hàng sẽ ở trong cùng một mạng LAN với máy chủ web của tôi (có thể truy cập Google), nhưng tôi không đảm bảo rằng tất cả khách hàng sẽ có quyền truy cập bên ngoài mạng LAN .Làm cách nào để biết Google Visualization có được tải
Tôi muốn hiển thị dữ liệu sử dụng Charts Google cho những khách hàng có thể truy cập vào nó, và một bảng HTML đơn giản cho những ai không.
tôi đã cố gắng thiết lập một biến là false, và thay đổi nó là true trong một phương pháp gọi khi Visualization API của Google được nạp:
var canAccessGoogleVisualizationVar = false;
google.load('visualization', '1', {packages: ['corechart'], callback: canAccessGoogleVisualization});
function canAccessGoogleVisualization()
{
canAccessGoogleVisualizationVar = true;
}
Nhưng nó dường như không làm việc.
Làm thế nào tôi có thể biết từ phía khách hàng nếu Google Visualization có thể truy cập được hay không?
Cập nhật: Đoạn mã trên đã không làm việc vì đoạn mã sau (mà tôi không gửi trước khi tôi nghĩ là không có ý nghĩa):
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);
}
tôi nhận thấy didn mã của tôi 't làm việc bởi vì, nếu canAccessGoogleVisualizationVar == true
, chi nhánh if
không được thực hiện và nếu số false
thì function drawVisualization()
sẽ không được thực hiện.
Vì vậy, tôi mất nếu kiểm tra bên ngoài các chức năng:
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>
Nhưng bây giờ nó không làm việc vì việc đánh giá if (!canAccessGoogleVisualizationVar)
đang được thực hiện trước khi dòng google.load(?, ?, canAccessGoogleVisualization);
gọi phương thức canAccessGoogleVisualization()
.
Làm cách nào để đảm bảo rằng tôi đang đọc giá trị canAccessGoogleVisualizationVar
sau khi cố gắng thực hiện cuộc gọi đến google.load(...);
?
Cập nhật các câu hỏi với nhiều thông tin. –
Đối với những gì nó có giá trị, nó có thể mất gviz js và css, và chỉ phục vụ nó lên từ bất cứ nơi nào ứng dụng nội bộ này. Nhiều người trong số các biểu đồ được thực hiện phía khách hàng, và do đó sẽ làm việc tốt theo cách này (tôi đã thực hiện nó). Chỉ cần nhìn vào các cuộc gọi mạng đi ra ngoài khi bạn tải api như bình thường và bạn có thể xem các tập tin bạn cần. Cần lưu ý rằng a) mã sẽ được rút gọn và b) bạn sẽ không nhận được bất kỳ cập nhật nào về mã mà không thay đổi nó theo cách thủ công, nhưng nó có thể là một tùy chọn :) – oli
Cảm ơn @peter, tôi đang thử. Thực tế là các mã sẽ không được cập nhật nếu tôi không tự thay đổi nó là một cộng (trong trường hợp này). –