2009-10-19 8 views
3

J'ai une question sorta unique. Il y a une application web qui prend 5,57 Mo de chargement. Je veux une barre de chargement ou Ajax Spinner là-bas qui s'anime afin qu'ils sachent que les choses progressent pendant le ~ 10-20 secondes de temps de chargement. La plupart sont des images, beaucoup de JS ici aussi. Le problème ici est que Firefox goupille correctement tout ce qui fait que le gif animé continue de tourner. Animer Le monde est heureux. IE charge cependant les premières images du spinner, puis bute tôt et ne fait rien tant que le site n'est pas totalement chargé. Il verrouille également le navigateur sur un chargement non mis en cache. Il montrera alors la page quand le chargement est complet, cependant le spinner s'arrête pendant les premières images s'il est cahced ou uncached. (Une charge mise en cache est seulement ~ 2-3 secondes) Encore une fois, cela ne se produit pas dans Firefox, Safari ou les navigateurs modernes, sauf pour IE. Y at-il un moyen de charger IE bien? La recherche n'a encore rien trouvé.Internet Explorer, barre de chargement, 5,57 Mo page

Code du chargeur (sur demande): Notez qu'il est difficile de paraphraser en raison de la grande base de code, mais cela semble capturer le dilemme.

<script type="text/javascript"> 
    function show_main_gui() { 
     dojo.byId("splashloader").style.visibility = "hidden"; 
    } 
    function init(){ 
    show_main_gui(); 
    } 
    dojo.addOnLoad(init); 
</script> 
<style type="text/css"> 
#splashloader { 
position:absolute; 
z-index:999; 
width:800px; 
visibility:visible; 
height:600px; 
background:#fff; 
text-align:center; 
color:#1E4FD9; 
} 
</style> 

<table id="splashloader"><tr><td><img src="images/interface/splashloader.gif"><span class="loader"> Loading...</span></td></tr></table> 

Une table ... car il est plus facile d'aligner verticalement dans tous les navigateurs.

IE 8 et 7 persistent avec le gel de l'animation gif de chargement. Si je change le spinner à afficher après le chargement, l'animation s'anime. J'ai essayé de prendre tous les appels JavaScript à part ça, et de charger sur le cache, et il montre toujours seulement les premières images dans IE pendant le chargement de 1-2 secondes.

+1

Pouvez-vous fournir le code qui génère le chargeur? –

+0

Je dirais que si vous pouvez le tester dans IE 7 ou 8 et cela fonctionne (de bonnes chances, il pourrait fonctionner dans 8), puis l'oublier. Il y a longtemps que j'ai cessé de m'inquiéter des utilisateurs d'Internet Explorer 6 et inférieurs. –

+0

J'ai ajouté le code dans la question principale ci-dessus. Pour ref, j'utilise toutes les trois versions d'IE, il le démontre dans IE 7 et * ainsi. –

Répondre

0

Vous pouvez charger dynamiquement le contenu en javascript, et utiliser votre technique préférée de mise à jour d'un état/chose de progrès. Les easies est peut-être d'utiliser le texte de statut du navigateur, mais vous pouvez bien sûr aussi utiliser une zone sur la page pour montrer l'animation et/ou le statut.

<script id="postLoadJavascript" type="text/javascript" ></script> 

<script type="text/javascript"> 
    var imagesLoaded = 0; 
    var totalImages = 100; 
    for(imagesLoaded = 0; imagesLoaded < totalImages; imagesLoaded++){ 
    window.status = 'Loading image ' + imagesLoaded + ' of ' totalImages + '...'; 
    document.write('<img src="image' + imagesLoaded +'.gif" /> '); 
    } 
    window.status = 'Loading additional javascript...'; 
    document.getElementById('postLoadJavascript').src = "theAdditionalJavascript.js" 
    window.status = 'Finished loading all.'; 

</script> 
+0

Une autre bonne réponse intrigante. Il pourrait descendre à le faire comme ça. Merci beaucoup. –

+0

Il s'avère que la fonction de préchargement du dojo et le chargement simultané de javascript (analyse d'un fichier de règles xml de 200 Ko) empêchent la rotation de l'image. J'ai utilisé une partie de votre solution, mais je suis retourné à l'utilisation du dojo avec seulement le javascript postloading d'une version JSON en cache du résultat de l'analyse du fichier de règles xml comme IE chargeant chaque fichier image un par un prenait trop de temps. Firefox essaie toujours de tout charger et affiche l'interface principale avant que tous soient chargés de toute façon, mais ça va. Merci: D –

1

essayez de mettre cette image dans un iframe. c'est ce que les développeurs gmail utilisaient avec cette étiquette rouge "loading ..." dans les versions précédentes

+0

Intéressant, je l'avais envisagé mais juste rejeté quand j'ai vu pendant les charges non mises en cache qu'il bloquait aussi les autres onglets du navigateur. Cependant il y a une possibilité .. Je rapporterai mon résultat demain. Merci Tzury. –

0

C'est un bug avec les gifs animés dans IE. Passer d'un gif animé à un javascript pour animer la chose du chargeur ... (par exemple en échangeant des images ou similaire)

+0

Je vous ferai savoir si cela fonctionne aussi bien pour les charges non-reliées. Je suppose que ça ne va pas mais nous verrons :) Un problème, plusieurs réponses. J'aime obtenir des réponses utiles et créatives. Merci KristoferA. –

Questions connexes