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 :

Attentre la définition d'un objet avant de l'utiliser (onDefine?)


Sujet :

JavaScript

  1. #1
    Membre actif Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Points : 254
    Points
    254
    Par défaut Attentre la définition d'un objet avant de l'utiliser (onDefine?)
    Bonjour,

    Je vis une situation plutôt banale à laquelle je tente de trouver une solution définitive. C'est à dire que j'ai du code javascript qui ne s'exécute pas à la suite de code primordial à son exécution, ce qui cause des erreurs javascript. Je m'explique :

    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
    function import_javascript(src) {
      var head_tags = document.getElementsByTagName('head'); 
      if((head_tags != undefined)&&(head_tags.length > 0)) {
        var head_tag = head_tags[0]; 
        var script_tag = document.createElement('script');   
        script_tag.setAttribute('type', 'text/javascript');   
        script_tag.setAttribute('src', src);   
        head_tag.appendChild(script_tag);
      }
    }
    
    [...] // Code HTML
    <script type="text/javascript">
    import_javascript('repertoire/monfichier.js');
    </script>
    
    [...] // Code HTML
    <script type="text/javascript" defer> //Appelons là Ligne #1
    var maVar = new MonObjet(); //Appelons là ligne #2
    </script>
    MonObjet est défini dans monfichier.js mais le navigateur saute à la définition de maVar avant d'avoir terminé l'exécution de la fonction import_javascript(), ce qui cause l'erreur "MonObjet is undefined".

    Je sais que je ne peux me fier sur defer ou onLoad pour que le navigateur exécute ma ligne au bon moment. J'aimerais donc que ma Ligne #2 ne s'exécute qu'à condition que MonObjet ait été préalablement défini et attende que MonObjet soit défini sinon.

    J'ai essayé d'étudier le Narrative Javascript après avoir essayé le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    while(MonObjet == undefined) {}; //IE n'aime vraiment pas ça
    var maVar = new MonObjet();
    J'en suis venu à la conclusion peut-être erronée qu'il me faudrait un événement qui causerait le déclenchement de la définition de maVar. Bien entendu onDefine est un événement qui n'existe pas à ma connaissance, je me tourne donc vers vous, autres développeurs qui ont assurément déjà vécu cette frustration, afin de savoir comment vous avez résolu vos problèmes.
    Pensez à la balise

  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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    if (MonBojet) dans un setInterval
    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 actif Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Points : 254
    Points
    254
    Par défaut
    Comme ça?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function maFonction() {
      if(MonObjet != undefined) var maVar = new MonObjet();
      else setTimeout('maFonction()', 50);
    }
    Pensez à la balise

  4. #4
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    setInterval me semblerait plus approprié ...

    suivi d'un clearInterval juste avant la nouvelle instanciation
    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 !

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

Discussions similaires

  1. Shader et Mapping : définition d'un objet GeneralTransform
    Par Ikit dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 06/10/2009, 10h39
  2. Définition d'un objet contenant des sous-objets
    Par Gyslain dans le forum Général Python
    Réponses: 3
    Dernier message: 16/05/2009, 02h20
  3. [EJB2.0]Vérifier inexistence d'un objet avant de le créer
    Par Invité dans le forum Persistance des données
    Réponses: 2
    Dernier message: 21/04/2008, 10h17
  4. Remoting: comment initialiser l'objet avant de le publier?
    Par Rodrigue dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 05/03/2008, 17h22
  5. Script objet avant methode formulaire?
    Par le_gueux dans le forum 4D
    Réponses: 17
    Dernier message: 17/07/2006, 15h46

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