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 :

Comment débugger un javascript qui est chargé via Ajax ?


Sujet :

jQuery

Vue hybride

Walkn Comment débugger un... 01/10/2012, 11h59
marcbuils Bonjour Walkn, Je ne vais... 02/10/2012, 12h41
Walkn Bonjour marcbuils, Merci... 02/10/2012, 13h10
marcbuils Pas exactement, Je te... 03/10/2012, 14h00
marcbuils Bonjour Walkn, Je reviens... 31/10/2012, 18h41
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 69
    Par défaut Comment débugger un javascript qui est chargé via Ajax ?
    Bonjour à tous,

    Je viens poster une nouvelle discussion car je suis confronté à un problème.

    J'aimerai savoir comment faire pour débugger un fichier JavaScript est chargé via Ajax ?

    Je m'explique :

    J'ai une page web, dans laquelle se trouve un bouton qui m'affiche une popin via lightbox et jquery. Cette popin correspond à une JSP qui contient un fichier JavaScript qui lui est propre.

    Ce que j'aimerai, c'est pouvoir débugger ce JavaScript au travers de Firebug pour pouvoir mettre des points d’arrêt et m'assurer que tout se déroule bien.

    Hors je ne peux pas mettre de point d'arrêt dans ce JavaScript pour la simple et bonne raison que celui-ci n'apparait pas dans l'onglet script de Firebug

    Ce que j'ai constaté, c'est que le fichier en question est chargé via Ajax. J'ai constaté cela dans l'onglet réseau de Firebug. Mais impossibilité de le débugger

    Est-ce quelqu'un à déjà eu ce problème ? Ou est-ce que quelqu'un pourrait essayer de m'aider à résoudre ce problème ?

    Je vous remercie par avance pour votre aide.

  2. #2
    Membre confirmé Avatar de marcbuils
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2012
    Messages : 99
    Par défaut
    Bonjour Walkn,

    Je ne vais pas avoir la réponse à ton problème, mais personnellement, j'utilise le moyen suivant afin de le contourner:
    - ajoute une balise script qui charge ton fichier sur ta page principale, comme ça tu devrais pouvoir déboguer ton JS.

    Je sais que ce n'est pas l'idéale, mais je n'ai pas encore trouvé de débogueur qui prenne en compte les chargements dynamiques en Ajax.

    @++,
    Marc
    Pour moi, une informatique efficace est avant tout une informatique intuitive
    Liste de mes cours: http://marcbuils.developpez.com
    Si vous appréciez mon intervention, dite le avec le

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 69
    Par défaut
    Bonjour marcbuils,

    Merci pour ton retour. En somme, ce que tu me conseils, c'est de ne plus charger mon JavaScript correspondant à ma popin au moment où celle-ci apparait mais plutôt au sein de la page principale ?

    D'autre part, j'ai essayé en rajoutant à l'endroit où je souhaite débugger mon JavaScript mais cela ne fonctionne pas non plus ...

    Est-ce quelqu'un aurait réussi à débugger des JavaScripts chargés dynamiquement en Ajax ??

    Encore merci d'avance pour votre aide.

  4. #4
    Membre confirmé Avatar de marcbuils
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2012
    Messages : 99
    Par défaut
    Pas exactement,

    Je te conseil, juste le temps de ton debug, de rajouter un chargement classique en avec la balise script. Je pense que tu peux même garder le chargement dynamique en plus, il me semble que Firebug arrive à s'en sortir (à tester...).
    Pour moi, une informatique efficace est avant tout une informatique intuitive
    Liste de mes cours: http://marcbuils.developpez.com
    Si vous appréciez mon intervention, dite le avec le

  5. #5
    Membre confirmé Avatar de marcbuils
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2012
    Messages : 99
    Par défaut
    Bonjour Walkn,

    Je reviens vers toi car depuis ton message, on m'a fait découvrir une nouvelle méthode pour charger les fichiers de manière asynchrone: le LazyLoad.
    Un des avantages de cette méthode, c'est que le fichiers chargés sont débogable avec Firebug.

    Le principe est d'ajouter des balise scripts dans le header de la page Web et non de les charger en Ajax, mais sur le fond le résultat est le même.

    Voici une fonction qui fait ça très bien:
    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
    20
    21
    22
    23
     
    // lazyload script
    // ref: http://www.nczonline.net/blog/2009/07/28/the-best-way-to-load-external-javascript/
    var _loadScript = function(url, callback){
    	var script = document.createElement("script")
    	script.type = "text/javascript";
     
    	if (script.readyState){ //IE
    		script.onreadystatechange = function(){
    		if ( script.readyState == "loaded" || script.readyState == "complete"){
    			script.onreadystatechange = null;
    			callback();
    		}
    	};
    	} else { //Others
    		script.onload = function(){
    			callback();
    		};
    	}
     
    	script.src = url;
    	document.getElementsByTagName("head")[0].appendChild(script);
    };
    @++,

    Marc
    Pour moi, une informatique efficace est avant tout une informatique intuitive
    Liste de mes cours: http://marcbuils.developpez.com
    Si vous appréciez mon intervention, dite le avec le

  6. #6
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Et avec $.getScript() ?

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

Discussions similaires

  1. [VB.NET] Comment supprimer un fichier qui est utilisé ?
    Par Toon94 dans le forum Windows Forms
    Réponses: 12
    Dernier message: 13/06/2010, 12h59
  2. detecter si un javascript externe est chargé
    Par pyrou dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/05/2007, 08h36
  3. SDL: comment rendre l'image qui est déjà en mémoire?
    Par morning_wind dans le forum SDL
    Réponses: 4
    Dernier message: 16/01/2007, 08h32
  4. Réponses: 1
    Dernier message: 28/08/2006, 15h42
  5. Réponses: 4
    Dernier message: 03/08/2006, 16h36

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