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

jQuery Discussion :

Chargement dynamique fichiers JS et CSS - Solution partielle actuellement


Sujet :

jQuery

  1. #21
    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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    Ha oui on peut alors envisager un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    var toLoad = ["folder1/forlder2/file1.js", "folder1/forlder2/file2.js", "folder1/forlder2/file3.js"], loaded = 0;
     
    var onLoaded = function() {
        loaded++;
        if (loaded == toLoad.length) {
           // tous les fichiers sont chargés 
           // ici le code a effectué après chargement   
    } else {
            console.log( loaded + ' fichiers chargés ...');
        }
    }
     
    for (var i = 0, len = toLoad.length; i < len; i++) {
        $.getScript(toLoad[i], onLoaded);
    }
    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 !

  2. #22
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 031
    Billets dans le blog
    45
    Par défaut
    Mais comment sais-tu les fichiers existant dans "folder1/forlder2/" puisque justement mon problème c'est de récupérer les fichiers du répertoire, répertoire passé en data dans AJAX. Donc je ne sais pas quels fichiers vont être retournés dans xhrData !!!!

    Donc var toLoad comment l'initialises-tu?. Encore une fois, je ne sais pas du tout les fichiers existant dans "folder1/forlder2/" et retournés dans xhrData?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $(document).on("pagecreate", "#index", function(event)
    {   var oSerialData =  {}; 
        oSerialData.path  = "/folder1";
        $.ajax({url: "ownInclude.php", data: oSerialData, type: JSON,
             success: function(xhrData){upLoadFiles(xhrData) },
             error: function(error){alert(error);}
        });
    }
    De plus, en raison de l'asynchronisme d'AJAX, comment être certain que tous les fichiers chargés dynamiquement le seront avant que les fonctions qui les composent ne soient appelées côté client

    Merci de ta patience

  3. #23
    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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    Bon on va décomposer ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var toLoad = "folder1/forlder2";
    $.getScript("page_de_concaténation_php.php?d="+toLoad", function() { //callback })
    dans ta page de concaténation coté serveur tu concatènes tous les script de tes fichiers js contenu dans le répertoire récupérer en $_GET, soit par des include, ou des echos des contenus des fichiers, dans une boucle ou autre...

    dans le callback les scripts concaténés auront été chargés .
    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 !

  4. #24
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 031
    Billets dans le blog
    45
    Par défaut
    SpaceFrog,

    Merci encore pour ta patience. La meilleure façon pour moi de comprendre est de reformuler et synthétiser tout ce qui a été écrit. Mais avant, j'ai lu ici

    Comme $.getScript est asynchrone, je préfère gérer l'appel AJAX pour paramétrer async à false. Donc sur sur le chargement de la page HTML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    $(document).on("pagecreate", "#index", function(event)
    {  var path = "folder1/forlder2";
         $.ajax(
         { async : false,
            url: "page_de_concaténation_php.php",
            data: path
         }).success(function(xhrData) {loadScript(xhrData)});
    });
     
    function loadScript(toLoad)
    {    for (var i = 0, len = toLoad.length; i < len; i++)
        {   $.ajax(
            {  url: toLoad[i],
               dataType: "script",
               cache: true // ==> Je ne sais pas pourquoi ???
             });
        }
    }
    Cette fonction alternative ne serait-elle pas suffisante?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function loadScript(toLoad)
    {    for (var i = 0, len = toLoad.length; i < len; i++)
        {  var myScript = document.createElement('script');
            myScript.src = toLoad[i];
            document.head.appendChild(myScript);
        }
    }

    Ou celle-ci que j'ai trouvé ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
       function loadScript(toLoad, callback){
            var array = [];
     
            toLoad.forEach(function(script){
                array.push($.getScript( script ))
            });
     
            array.push($.Deferred(function( deferred ){
                        $( deferred.resolve );
                    }));
     
            $.when.apply($, array).done(function(){
                    //===> Pourquoi ???
                    if (callback){
                        callback();
                    }
                });
        }


    Bon enfin coté server, ça ne change pas, page_de_concaténation_php.php serait
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
      $aFilePath=[];
        $Path= urldecode($_POST["path"]);
        $dir = dir($Path)
        while (filePath = $dir->read() ){ $aFilePath[] = filePath}
        return aFilePath
    }
    ?>


    J'ai lu pendant mes pérégrinations postesques (barbarisme ou néologisme au choix) que pour certaines librairies, il fallait respecter un ordre JQuery UI avant les autres par exemple. Est-il possible de le tester?

  5. #25
    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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    je ne comprends pas ton obsession de l'assynchrone ???

    https://api.jquery.com/jquery.getscript/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $.getScript( "ajax/test.js", function( data, textStatus, jqxhr ) {
    console.log( data ); // Data returned
    console.log( textStatus ); // Success
    console.log( jqxhr.status ); // 200
    console.log( "Load was performed." );
    });
    dans le callback les scripts sont chargés !
    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. #26
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 031
    Billets dans le blog
    45
    Par défaut
    Merci beaucoup pour tous ces retours.

    Mon obsession sur l'asynchronicité et tu as raison, j'en ai bien une, tiens à ma méconnaissance des comportements web.

    Je me demande comment, par exemple au chargement d'une page, est géré l'appel à une fonction qui n'est pas chargée car le chargement dynamiquement du fichier JS dans lequel elle se trouve ne l'est pas encore en raison de l'asynchronicité d'AJAX.

    Merci encore pour ton aide

  7. #27
    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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    Je réitère donc:
    dans le callback les scripts sont chargés !
    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 !

  8. #28
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 031
    Billets dans le blog
    45
    Par défaut
    Merci pour ton retour et ma dernière demande est un lien pour comprendre la notion de callback qui m'échappe compétement et je pense que c'est à cause de ça que je m'acharne.

    Désolé d'être aussi

    Après ton prochain retour, je la discussion passera en résolu !

    Encore un très grand merci pour ton aide

  9. #29
    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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    Un callback est une fonction lancée après l'éxecution du déclencheur


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $.getScript( "ajax/test.js", function( ) { // ici c'est le callback
     
    alert(" Voilà j'ai fini mon getScript !!, toute instruction lancée ici pourra faire appel a des fonctions chargées par le getScript")
     
    });
    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 !

  10. #30
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 031
    Billets dans le blog
    45
    Par défaut
    Ton explication sur le callback est juste lumineuse

    Merci encore pour ton aide précieuse et qui me fait avancer sur la longue pente qui mène aux sommets de la connaissance ...

  11. #31
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 031
    Billets dans le blog
    45
    Par défaut
    la solution est ici

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. CSS Dynamique : problème de chargement des fichiers
    Par Emyleen dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 07/10/2011, 14h34
  2. Chargement dynamique de la CSS dans la MasterPage
    Par titan_33 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 05/09/2008, 10h19
  3. Chargement dynamique d'un fichier VBA
    Par ci0420 dans le forum Word
    Réponses: 2
    Dernier message: 16/10/2007, 08h00
  4. [AJAX] Chargement dynamique de CSS
    Par drannh dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/12/2006, 12h09
  5. Réponses: 8
    Dernier message: 14/04/2005, 19h06

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