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 :

Erreur à l'appel de $('head').append(filePath) pour fichier JS


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 026
    Billets dans le blog
    45
    Par défaut Erreur à l'appel de $('head').append(filePath) pour fichier JS
    Bonjour à tous,

    Voilà j'ai l'erreur suivante
    Uncaught TypeError: Cannot read property 'helpers' of undefined (19:07:50:809 | error, javascript)

    quand $('head').append(filePath) est appelé comme suit


    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
     
    jqXHR.success(function (jqXHRData) 
    {	var filePath ="";
    	for (i = 0; i < jqXHRData.length; i++) 
    	{	
    		//PAS d'ERREUR  avec  avec jqXHRData[0]["fic"] ="fancyBox-fullpack/source/helpers/jquery.fancybox-buttons.css"
    		if (jqXHRData[i]["fic"].substr(-3) ==="css")
    		{	 // Sans erreur 
                             filePath = "<link href='" + jqXHRData[i]["fic"] +  "' rel='stylesheet'  type='text/css' media='screen'/>";
    			$('head').append(filePath);
    		}
     
    		//ERREUR  avec  jqXHRData[1]["fic"] = "fancyBox-fullpack/source/helpers/jquery.fancybox-buttons.js" 
                   else if (jqXHRData[i]["fic"].substr(-2) ==="js")
    		{    filePath = "<script src='" + jqXHRData[i]["fic"] + "'></script>"; //filePath = "<script src='fancyBox-fullpack/source/helpers/jquery.fancybox-buttons.js'></script>"
    		     $('head').append(filePath);
    		}
    	}
    }
    Cela peut-il provenir de dépendance avec d'autres fichiers JS?

    Merci par avance

  2. #2
    Membre éprouvé

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 026
    Billets dans le blog
    45
    Par défaut
    après lecture de forums, je pensais résoudre mon problème en échappant </script> avec <\/script>" mais pas plus de succès

    Je n'ai pas d'erreur si je n'appelle pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    filePath= "<script type='text/javascript' src='" +jqXHRData[i]["fic"]+ "'><\/script>";
    $('<script />', { type : 'text/javascript', src :  jqXHRData[i]["fic"]}).appendTo('head'); ou $('head').append(filePath);

    Par contre si j'appelle le code ci-dessus sachant que:
    1. jqXHRData[0]["fic"] ="<link href="fancyBox-fullpack/source/helpers/jquery.fancybox-buttons.css" rel="stylesheet" type="text/css" media="screen"></link>"
    2. jqXHRData[1]["fic"] ="<script type="text/javascript" src="fancyBox-fullpack/source/helpers/jquery.fancybox-buttons.js"></script>"


    j'ai dans le DOM
    <link href="fancyBox-fullpack/source/helpers/jquery.fancybox-buttons.css" rel="stylesheet" type="text/css" media="screen"></link>
    <script type="text/javascript" src="fancyBox-fullpack/source/helpers/jquery.fancybox-buttons.js"></script>

    Mais après le chargement de jqXHRData[1]["fic"] j'ai la fameuse erreur
    Uncaught TypeError: Cannot read property 'helpers' of undefined (01:55:49:445 | error, javascript)

  3. #3
    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
    Fais plutot un getScript pour le fichier js ...
    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. #4
    Membre éprouvé

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 026
    Billets dans le blog
    45
    Par défaut
    Merci SpaceFrog mais le problème venait comme je le présentais des dépendances entre fichiers JS.

    En effet, il faut charger les fichiers JS dans l'ordre suivant:
    1. Fichiers du répertoire 'fancyBox-fullpack/source
    2. Fichiers du répertoire 'fancyBox-fullpack/source/helpers


    La question était donc comment faire pour lancer se séquençage?

    Après m'être mis le cerveau à l'envers puis à l'endroit, bon j'avoue je pratique le yoga, j'ai trouvé une solution qui nécessitait de :
    1. Comprendre le comportement de RecursiveIteratorIterator
    2. Faire une arborescence qui implicitement indique le lien père / enfant ou appelant/appelé
    3. Puis incrémenté / décrémenté la boucle FOR(){} en fonction de son arborescence



    Le billet DOM - Chargement dynamique des fichiers JavaScript : Traitement simple des fichiers JS interdépendants tente d'expliquer ma solution.

    Merci à tous

    Merci

  5. #5
    Membre éprouvé

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 026
    Billets dans le blog
    45
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Fais plutot un getScript pour le fichier js ...
    L'utilisation de la méthode $('head').append(filePath) était un exercice pour comprendre globalement l'ajout d'éléments dans le DOM.

    Merci encore pour ton aide

  6. #6
    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
    le getScript aurai permis d'utiliser le callback et ainsi éviter que des scripts soient appelés avant que d'autres aient fini de charger ...
    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 !

  7. #7
    Membre éprouvé

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

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

    Mon problème était l'ordre de chargement des fichiers certains devaient l'être avant d'autre et sauf si getScript gère les dépendances par la création d'une pile, je ne pense pas qu'il résolve le problème de l'ordre de chargement.

    Merci encore

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 14/03/2016, 18h24
  2. Réponses: 0
    Dernier message: 13/02/2010, 20h41
  3. [imprimer]erreur à l'appel de window.print()
    Par banzzai dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 29/08/2006, 10h10
  4. [FPDF] Erreur après appel d'une fonction avec include
    Par orus8 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 04/11/2005, 10h49
  5. appel un executable de dos pour vc++
    Par leo13 dans le forum MFC
    Réponses: 6
    Dernier message: 16/06/2004, 23h12

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