Bonjour,
Sur mon appli web la plupart des traitements passent en ajax, j'aimerais donc qu'à chaque chargement une barre de chargement s'affiche.
La solution théorique : J'ai donc un div qui récupère les dimension de la fenêtre et qui recouvre toute l'appli. Ce div contient un gif pour le chargement. A chaque entrée dans la fonction js qui traite mes appels ajax j'affiche ce div à l'aide de :
et je le cache en sortant à l'aide de :
Le problème : Cette solution fonctionne parfaitement sous Firefox et opera, elle ne fonctionne pas sous IE, Chrome et Safari.
Je n'arrive pas à trouver pourquoi, une idée ?
La partie js qui génère le div :
et le css qui complète :
Je précise tout de même que ce div s'affiche bien sur tous les navigateurs lorsque je le met en display: block; directement.
Modifié par Shawn (13 Jul 2010 - 11:24)
Sur mon appli web la plupart des traitements passent en ajax, j'aimerais donc qu'à chaque chargement une barre de chargement s'affiche.
La solution théorique : J'ai donc un div qui récupère les dimension de la fenêtre et qui recouvre toute l'appli. Ce div contient un gif pour le chargement. A chaque entrée dans la fonction js qui traite mes appels ajax j'affiche ce div à l'aide de :
document.getElementById('chargement').style.display = 'block';
et je le cache en sortant à l'aide de :
document.getElementById('chargement').style.display = 'none';
Le problème : Cette solution fonctionne parfaitement sous Firefox et opera, elle ne fonctionne pas sous IE, Chrome et Safari.
Je n'arrive pas à trouver pourquoi, une idée ?
La partie js qui génère le div :
<body>
<!-- Ma page -->
<script type="text/javascript">
lrgec = screen.availWidth;
htec = screen.availHeight;
if ( typeof( window.innerWidth ) == 'number' ) {
htec = window.innerHeight;
} else if ( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
htec = document.documentElement.clientHeight;
} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
htec = document.body.clientHeight;
}
document.write("<div id=\"chargement\" style=\"width:"+ lrgec +"px; height:"+ htec +"px;\"><img src='./img/ajax-loader.gif' /><\/div>");
</script>
</body>
</html>
et le css qui complète :
#chargement{display: none; position: absolute; left: 0; top: 0; z-index: 100; background: transparent url(../img/overlay.png) repeat;}
#chargement img{margin-left: 40%; margin-top: 35%;}
Je précise tout de même que ce div s'affiche bien sur tous les navigateurs lorsque je le met en display: block; directement.
Modifié par Shawn (13 Jul 2010 - 11:24)