Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/12/2010, 11h40   #1
Futur Membre du Club
 
Inscription : septembre 2006
Messages : 107
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : septembre 2006
Messages : 107
Points : 18
Points : 18
Par défaut Affichage d'une image pendant un traitement javascript

Bonjour,

Je travail sur une page où les données sont en caches dans une collection JS,
je n'affiche les données que par 100.

Le tableau d'affichage des données est construit par traitement javascript.

Pour le changement de page je créer le tableau et je remplace l'ancien par le nouveau, ce qui prend un certain temps, pendant lequel j'aurais voulu afficher un gif animé pour que l'utilisateur ne s'inquiète pas.

Problème 1 : L'image n'avait pas le temps de s'afficher.
Solution : Settimeout

Code :
1
2
3
4
5
   $('#loading').empty().html(' <img  src="Images/load.gif" alt="Chargement en cours" />');  
 
    setTimeout(pageTo,10,page);
 
    return false;
Problème 2 : L'image ne s'anime pas pendant le traitement.
Solution : Bah la je sèche, si JS est responsable de l'animation du Gif et qu'il est occupé par ma fonction pageTo, je ne vois pas comment faire ...
aurelien.tournier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2010, 16h11   #2
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 073
Points : 4 073
C'est bien la première fois que je vois utiliser le 3eme param de setTimeout... ta variable "page" contient la valeur correspondant au langage à utiliser ?
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/12/2010, 22h36   #3
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 802
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 802
Points : 35 807
Points : 35 807
Citation:
Envoyé par RomainVALERI Voir le message
C'est bien la première fois que je vois utiliser le 3eme param de setTimeout... ta variable "page" contient la valeur correspondant au langage à utiliser ?
Pour tout dire, utiliser les paramètres optionnels de setTimeout est plutôt déconseillé car ils n'ont pas la même utilité selon le navigateur.
Si effectivement, le 3e paramètre correspond au langage de script utilisé pour IE, il correspond au(x) paramètre(s) à passer à la fonction (1er paramètre) pour les autres navigateurs .

Mais je te rejoins dans ton analyse, je pense que le problème de aurelien.tournier vienne du fait qu'il utilise mal setTimeout
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2010, 09h04   #4
Membre expérimenté
 
Duke Jikel
Inscription : mai 2010
Messages : 340
Détails du profil
Informations personnelles :
Nom : Duke Jikel

Informations forums :
Inscription : mai 2010
Messages : 340
Points : 548
Points : 548
Citation:
Envoyé par aurelien.tournier Voir le message
Bonjour,

Je travail sur une page où les données sont en caches dans une collection JS,
je n'affiche les données que par 100.

Le tableau d'affichage des données est construit par traitement javascript.

Pour le changement de page je créer le tableau et je remplace l'ancien par le nouveau, ce qui prend un certain temps, pendant lequel j'aurais voulu afficher un gif animé pour que l'utilisateur ne s'inquiète pas.

Problème 1 : L'image n'avait pas le temps de s'afficher.
Solution : Settimeout

Code :
1
2
3
4
5
   $('#loading').empty().html(' <img  src="Images/load.gif" alt="Chargement en cours" />');  
 
    setTimeout(pageTo,10,page);
 
    return false;
Problème 2 : L'image ne s'anime pas pendant le traitement.
Solution : Bah la je sèche, si JS est responsable de l'animation du Gif et qu'il est occupé par ma fonction pageTo, je ne vois pas comment faire ...
Et la génération du tableau HTML tu la fais comment ? et elle te prend combien de temps sur ton navigateur ?
Je dis ça, mais générer 400 lignes de tableau, il faut moins de 0.2s dans un JS bien optimisé.
Si tu attaques le DOM à chaque ligne de tableau ajoutée, tu auras les processus de rafraichissement du dom à chaque fois et là tu pourras dire byebye aux perfs de ta machine
dukej est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2010, 10h09   #5
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant perpétuel
Secteur : Enseignement

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
Bonjour

Code :
$('#loading').empty().html(' <img  src="Images/load.gif" alt="Chargement en cours" />');
Travail inutile, il suffit de :

Code :
$('#loading').html('<img src="Images/load.gif" alt="Chargement en cours" />');
Avec html() le contenu existant est totalement remplacé par le nouveau contenu.

Voir : http://api.jquery.com/html/

J'ai déjà constaté qu'une image animée ne devenait active qu'après la fin du script en cours. J'avais résolu le problème en divisant le code en 2 fonctions séparées. Attention, la seconde fonction ne doit pas appeler la première.
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h10.


 
 
 
 
Partenaires

Hébergement Web