IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Accordian.pack.js & Ajax ?


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 11
    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...) ?

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    un petit script qui verfie le complete des images ...
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 11
    Par défaut
    Ok, merci !
    J'avais pensé à un truc dans cette idée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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) ?

  4. #4
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    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

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    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 - Mon Blog 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

    Venez sur le Chat de Développez !

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 11
    Par défaut
    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 !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ALGORITHME] a propos du bin packing
    Par barbot dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 05/01/2004, 23h27
  2. Qu'est-ce que Packed Record ?
    Par - Robby - dans le forum Langage
    Réponses: 2
    Dernier message: 03/09/2003, 11h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo