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

Bibliothèques & Frameworks Discussion :

DOJO - Chrome - script non exécuté [Dojo]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 94
    Points : 95
    Points
    95
    Par défaut DOJO - Chrome - script non exécuté
    Bonjour,

    Le script de type="dojo/method" n'est pas exécuté sur Chrome 5.
    Pour information, sur les autres navigateurs testés (IE, FF, Safari), je n'ai aucun problème.

    Je suis débutant en Dojo et je ne vois pas ce qui cloche.
    Je me suis penché sur le lien vers les fichiers de script (dojo.js), mais les fichiers requis sont biens trouvés dans le Developper Tools de Chrome.

    Merci de vos pistes.

    NB : Version de Dojo : 1.0.1

  2. #2
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2010
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 322
    Points : 535
    Points
    535
    Par défaut
    Je ne peux pas tester Chrome avec Dojo au travail malheureusement. Mais il y a un autre moyen de gérer les events que le "dojo/method" qui est le "dojo.connect" par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    dojo.connect(dijit.byId("bouton"), "onClick", function(){
          alert("j'ai cliqué sur le bouton");
    });
    dojo.connect(dijit.byId('monTableau'), "onRowDblClick", function(row){
    	alert("j'ai double-cliqué sur une ligne de mon datagrid.");
    });

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 94
    Points : 95
    Points
    95
    Par défaut
    Merci de ta réponse. Malheureusement, avec "dojo/connect", le script n'est pas exécuté.

    Pour information, mon script est contenu dans un fichier xsl.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <div id="test" dojotype="dojox.layout.ContentPane">
    <script type="dojo/method">
    console.info("test");
    </script>
    </div>
    NB : Si je met type="text/javascript", le script est exécuté, mais mon code réel a besoin d'utilisé dojo/method.

  4. #4
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2010
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 322
    Points : 535
    Points
    535
    Par défaut
    J'ai omis de te préciser que le "dojo.connect" doit être dans la fonction d'un "dojo.addOnLoad".

    Du coup, ca donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <script type="text/javascript">
    dojo.addOnLoad(function(){
    //insérer ici les dojo.connect
    });
    </script>
    En ce qui concerne le "dojo/method", cela correspond à un "dojo.connect" ce la ne remplace en aucun cas le javascript. Si tu veux utiliser le "dojo/method" il te faut y faire correspondre un évènement.

    Dans ton cas (je n'ai pas vérifié si ca marche) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <script type="dojo/method" event='onLoad'>
    console.info("test");
    </script>

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 94
    Points : 95
    Points
    95
    Par défaut
    Avec "dojo.addOnLoad", j'obtiens "dojo is undefined".
    Nb: J'utilise dojo.addOnLoad dans d'autres parties du code, où il n'y a pas de problème.

    Si j'ajoute "event='onLoad'", cela ne marche pas, même sur les autres navigateurs.

  6. #6
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2010
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 322
    Points : 535
    Points
    535
    Par défaut
    Après différents tests, le "dojo/method" fonctionne meme sans event. Au temps pour moi.
    J'ai oublie aussi de te poser une question.
    Que souhaites tu faire ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 94
    Points : 95
    Points
    95
    Par défaut
    Ce script initialise une variable et appelle une méthode pour initialiser un module de la page principale. La méthode est contenu dans un fichier js.

  8. #8
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2010
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 322
    Points : 535
    Points
    535
    Par défaut
    Dans quelles conditions ce script, qui initialise la variable, est appelé ?
    J'imagine que c'est avec le dojo/method... mais il correspond à quel évènement ?
    Tu es toujours sur la page principale ?

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 94
    Points : 95
    Points
    95
    Par défaut
    Le contenu du script n'a pas vraiment d'importance pour mon problème.
    Le fait est que j'ai besoin d'exécuter du script de type="dojo/method" et que celui-ci est ignoré par Chrome.

  10. #10
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2010
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 322
    Points : 535
    Points
    535
    Par défaut
    Ce que je veux savoir c'est a quel moment tu veux initialiser ta variable et lancer ta fonction. Je n'ai pas besoin du contenu du script.

    Dans le sens ou tu n'as pas d'event a utiliser avec le dojo/method, je ne vois pas pourquoi il t'est necessaire d'utiliser ce type.
    Si c'est au chargement de la page, le type=javascript est suffisant meme si la variable initialisée n'est pas de dojo ou encore la fonction qui est du javascript.
    Dojo ne fait que faciliter l'utilisation de javascript c'est du code javascript derriere donc dojo/method ou pas le résultat devrait être le même.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 94
    Points : 95
    Points
    95
    Par défaut
    Si je ne mets pas le type en "dojo/method", la variable globale et la méthode appelée n'est pas trouvé lors de l'exécution du script.
    La variable et la méthode se trouve dans le fichier webapp.js.uncompressed.js.

    Je rappelles que le code est fonctionnel pour les autres navigateurs.

  12. #12
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2010
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 322
    Points : 535
    Points
    535
    Par défaut
    Par chance, un collegue avait Chrome 6 sur sa clé usb.

    J'ai fait un test avec et en mettant un dojo/method cela fonctionne...

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 94
    Points : 95
    Points
    95
    Par défaut
    Je veux bien croire. Je penses que cela doit venir de la configuration du projet.
    A moins que cela vienne de la version de dojo qui commence à dater un peu.

    Ou autre hypothèse : vu que le problème survient au moment du chargement de l'application, dojo n'est peut-être pas encore chargé. Cela ne pose pas de problème dans les autres navigateurs, car le chargement est séquentiel, alors que sur Chrome, il charge en parallèle. Je ne suis pas sûr du fonctionnement interne de Chrome, mais j'essaie de trouver une explication plausible.

  14. #14
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2010
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 322
    Points : 535
    Points
    535
    Par défaut
    Donc si j'ai bien compris ton script ne s'exécute pas car la lecture du code par Chrome diffère des autres navigateurs...
    OK du coup là je ne peux pas t'aider
    Etant donné qu'un dojo.addOnLoad ne fonctionne pas, je ne vois pas comment tu peux faire.
    Pourtant, demon cote, avec Chrome 6 j'ai un dojo.addOnLoad qui fonctionne et un dojo/method également.
    Utilises tu le debugger intégré de chrome ? As tu des messages d'erreur ? Il doit bien y avoir quelque chose quelque part ^^

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 94
    Points : 95
    Points
    95
    Par défaut
    Aucun message d'erreur, le script n'est pas exécuté, comme si le type du script était invalide.

    Si je mets le script de type "text/javascript", cela ne marche sur aucun navigateur. Les méthodes digit.byId(""), à l'intérieur de la méthode appelée ne marche pas.

  16. #16
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2010
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2010
    Messages : 322
    Points : 535
    Points
    535
    Par défaut
    J'ai teste :

    - avec dojo/method, il m'affiche bien dans la console la valeur de mon "dijit.byId('toto').attr('value')"

    - avec text/javascript : ca ne fonctionne pas

    Est ce que tu as d'autres scripts dojo dans cette page qui s'executent eux ?

    Comment arrives tu a cette page ? Elle est contenue dans un contentpane et tu l'affiches via son href ?

    Je me demande si ta page est bien parsée en fait...
    Si j'enleve le "parseOnLoad" j'ai la même chose que toi du coup.
    Essaie de mettre ce code au début de ta page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <script language='javascript'>
    dojo.require("dojo.parser");
    dojo.parser.parse();
    </script>
    En l'ajoutant ca a fonctionné de mon coté.

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 94
    Points : 95
    Points
    95
    Par défaut
    J'ai bien l'impression que c'est un problème de parsing.
    Pourtant, il est bien activé. La preuve, c'est que cela marche pour les autres navigateurs. Je vais creuser de ce côté.

    Aucun script de type dojo/method ne s'execute sous Chrome. Pas de problème pour les autres scripts.

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 94
    Points : 95
    Points
    95
    Par défaut
    J'ai trouvé l'origine du problème.
    Dans la méthode de parsing, dojo recupère la liste des éléments de type dojoType :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list = d.query('[dojoType]', node);
    Or, pour Chrome, il faut l'écrire de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list = d.query('[dojoType]', node);
    Pour les versions supérieures de Dojo > 1.3, je pense que cela est fait directement. Malheureusement, ma version de dojo était antérieure (1.0.1).

    Nb : Pour regarder si le navigateur est Chrome :
    < 1.3 : parseFloat(navigator.userAgent.split("Chrome/")[1])
    >=1.3 : isChrome

    Edit : modification : "ma version de Chrome" par "ma version de dojo"

  19. #19
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Merci cougarg pour cette information (même si je pense que tu as fait un copier/coller trop rapide et dis Dojo pour Chrome, mais, ce sont de petites fautes de distractions).
    J'utilise rarement Chrome donc je ne connais pas les choses auxquelles il faut faire attention.

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

Discussions similaires

  1. Script non exécuté
    Par Gottlieb02420 dans le forum FastReport
    Réponses: 1
    Dernier message: 17/02/2017, 10h22
  2. [WS 2003] Domaine LOGON Script non exécuté
    Par Gandahar dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 16/05/2012, 09h25
  3. ReCaptcha: Tout correctement installé mais script non-exécuté (pas de message d'erreur)
    Par vhenin dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 11
    Dernier message: 22/02/2012, 21h46
  4. Script non compatible Chrome
    Par TRUNCKS dans le forum jQuery
    Réponses: 3
    Dernier message: 23/06/2011, 14h08
  5. Non exécution du script js dans page inclue via ajax
    Par clara1 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/05/2008, 11h10

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