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 21/12/2010, 11h27   #1
Invité de passage
 
Inscription : mars 2005
Messages : 10
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 10
Points : 3
Points : 3
Par défaut Accordian.pack.js & Ajax ?

Bonjour,

J'utilise depuis longtemps un petit script du nom d'accordian.pack.js qui permet de faire des menus sympa, animés & pas trop lourd...

Pour ceux qui ne connaissent pas : http://www.dezinerfolio.com/2007/07/...pt-accordions/

Le script fonctionne parfaitement tant que ma page est complètement chargée au moment ou j'appelle new Accordian();

Là où ça pose souci, c'est que je rempli un div de photos en Ajax.

J'ai donc ma requête Ajax qui va chercher les photos à mettre dans le div, ensuite je met en place le menu, mais si j'appelle new Accordian(); avant que les photos ne soient complètement chargées, le script n'arrivent pas à calculer la hauteur du div et je ne vois apparaitre que la moitié des photos ! (que la moitié haute, elles sont disposées en ligne).

Du coup, existe-t-il une solution pour appeler une fonction une fois que ma requête Ajax est complètement terminée (et pas onSuccess comme je fais actuellement, les images ne sont pas encore chargées à ce moment & du coup, le script se vautre...) ?
shenron42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 12h59   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 001
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 001
Points : 45 077
Points : 45 077
un petit script qui verfie le complete des images ...
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 13h43   #3
Invité de passage
 
Inscription : mars 2005
Messages : 10
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 10
Points : 3
Points : 3
Ok, merci !
J'avais pensé à un truc dans cette idée :

Code :
1
2
3
4
5
6
7
8
9
10
 
var charge = false;
 
while(!charge){
  foreach(image){
    if(image.complete()){ charge = true; } else { charge = false; }
  }
}
 
Accordian();
Mais c'est pas très propre, si ?

D'autant plus que si j'ai beaucoup d'image à charger, le navigateur ne risque pas de bloquer le JS à cause d'une boucle infinie (je crois que FF le fait) ?
shenron42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 14h17   #4
Expert Confirmé Sénior
 
Avatar de le_chomeur
 
Développeur informatique
Inscription : février 2006
Messages : 3 563
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2006
Messages : 3 563
Points : 4 025
Points : 4 025
Utilise plutôt une fonction avec un timer pour allez vérifier le complete , ce qui évitera de bloquer le processus , avec un message d'attente pendant le chargement des images
__________________
est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )
le_chomeur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 14h56   #5
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 001
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 001
Points : 45 077
Points : 45 077
sujet déja abordé il y a 3 ou 4 ans ... ( si ce n'est plus)

dans un setInterval
verifie le ratio entre images.length et l'increment des images complete

lorsque tu as 100% clearInterval et hop tu as le complete

prévoir toutefois un maximum d'itérations de la boucle
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 14h58   #6
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
Code :
1
2
3
4
5
while(!charge){
  foreach(image){
    if(image.complete()){ charge = true; } else { charge = false; }
  }
}


* foreach est loin d'être cross-browser en JavaScript.
* Ta boucle ne sert à rien puisqu'au final, le flag aura la valeur du complete de la dernière occurrence !
* image, c'est quoi pour toi ? (pas sûr que ce soit la même chose pour JavaScript !)
__________________
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 déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 15h48   #7
Invité de passage
 
Inscription : mars 2005
Messages : 10
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 10
Points : 3
Points : 3
Citation:
Envoyé par Bovino Voir le message


* foreach est loin d'être cross-browser en JavaScript.
* Ta boucle ne sert à rien puisqu'au final, le flag aura la valeur du complete de la dernière occurrence !
* image, c'est quoi pour toi ? (pas sûr que ce soit la même chose pour JavaScript !)
J'ai écris ça rapidement sans forcément chercher la syntaxe parfaite...

Le foreach serait plutôt "for in" pour la compatibilité et par "image", j'entendais un tableau que je récupèrerai avec document.getElementsByName ou quelque chose dans cette idée...

Par contre j'ai pas compris l'images.length et l'increment des images complete... Un img.complete me renvoi pas si l'image est chargée ou pas ?

Edit : A première vue, ça a l'air de gagner avec un setInterval qui test si image.complete()...
Et je crée le menu uniquement quand toutes les images sont chargées.
Je met un div d'attente au premier plan & ça fonctionne bien (mis à part qu'il reste longtemps vu le nombre d'images, mais ça marche !).

Merci beaucoup !
shenron42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h34.


 
 
 
 
Partenaires

Hébergement Web