Je le script suivant qui fonctionne, mais il a un problème gênant:Google Graphique message de chargement
<html>
<head>
<script language="javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChartAjax);
function drawChartAjax() {
$.ajax({
url: 'chart_json.aspx',
type: 'POST',
dataType: 'json',
success: function(data) {
drawChart(data);
}
});
}
function drawChart(json) {
var data = new google.visualization.DataTable();
data.addColumn('string', 'User');
data.addColumn('number', 'v');
data.addRows(json.length);
for(var j in json) {
for(var k in json[j]) {
data.setValue(parseInt(j), 0, k);
data.setValue(parseInt(j), 1, json[j][k].v);
}
}
var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
chart.draw(data, {width: 500, height: 300, is3D: true, title: 'Titles goes here'});
}
</script>
</head>
<body>
<div id="header">header goes ehre</div>
<div id="chart_div"></div>
<div id="footer">footer goes here</div>
</body>
</html>
Le problème est que, parfois, le tableau peut prendre beaucoup de temps à apparaître pour diverses raisons. Lorsque cela se produit, l'en-tête se charge, suivi du graphique, suivi du pied de page. Cela semble horrible IMO. IMO, la page entière devrait charger, y compris le pied de page, et un message de "chargement" plat devrait être affiché jusqu'à ce que le graphique soit prêt à s'afficher, ou un gif animé jusqu'à ce que le graphique soit prêt.
Comment puis-je charger la page entière et afficher un message de chargement jusqu'à ce que le graphique soit prêt, au lieu que le pied de page manque, le pied de page apparaît soudainement une fois le chargement du graphique terminé?
Je ne discuterais pas si c'était l'année 2003, mais c'est un peu trop old-school. Vous ne pouvez pas supposer que DOM est prêt même lorsque le script est à la fin du fichier. bozdoz a donné la bonne réponse. L'utilisation de $ (fonction) provoque l'exécution du code à l'intérieur après que DOM soit prêt. – naugtur
Merci pour la reconnaissance naugtur! :) – bozdoz