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 :

Comportement étrange d'IE sur interprétation code d'initialisation


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Consultant technique dans les ERP
    Inscrit en
    Octobre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant technique dans les ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Comportement étrange d'IE sur interprétation code d'initialisation
    Bonjour,

    j'aimerai vous soumettre mon problème au cas où l'un de vous aurait la réponse "miracle".

    Je suis en train de créer une classe qui permet de manipuler les propriétés CSS de n'importe quelles balises html lorsque celles-ci sont identifiées par une règle dans une feuille de style CSS externe et ceci en javascript.

    De cette manière, plus aucun code CSS "en ligne" ne traînera dans la page HTML.

    Comme je refuse de tout mettre dans un seul fichier javascript et que je refuse aussi de mettre des balises <script></script> à tout va pour importer les fichiers JS qui conviennent dans la page HTML, j'ai entrepris de créer une fonction dans la classe principale qui utilisera les autres fichiers qui permet d'insérer directement dans me flux de la page ces balises.

    J'ai besoin d'initialiser l'objet principal (HTMLElement) car je veux n'avoir à l'instancier qu'une fois. Donc je créé une variable global (pas bien me dirons certains).

    Mais cette objet a besoin que les autres pages javascript soient chargées. Comme les fichiers chargés dynamiquement ne sont pris en comptes que lorsque le script qui les a chargé a rendu la main, j'ai fait appel à la fonction de chargement des fichier JS en dehors de toutes fonctions, puis dans une fonction appelée sur l'événement onload du body, j'ai fait appel au constructeur de l'objet principal HTMLElement.

    Je me suis dit que le code en dehors de toutes fonctions étant définit avant tout autre code, une fois chargé par le navigateur sera exécuté avant la fonction appelée sur l'événement onload du body.

    Il se trouve que pour Firefox et Opéra, cela marche comme je l'avais prévu, mais sous IE, pour que ça marche, je suis obligé de faire afficher un alert() pour que la variable globale contenant l'objet HTMLElement n'ait pas la valeur null.

    Voici le code dont je parle ci-dessus :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
     
    // Variable global de mon objet principal
    var html_element = null;
     
    // Appel de la fonction de chargement dynamique des autres fichier JS 
    // nécessaire au fonctionnement de HTMLElement 
    IncHTMLElement();
     
    //---------
    // Curieux
    //
    // Sous IE, lorsque je décommente ce code, tout fonctionne bien, la variable 
    // html_element n'est pas nul, si c'est commenté oui
    // C'est comme s'il fallait qu'il y ait un alert() pour que le code s'exécute 8O
    //---------
     
    // var test = 'test';
    // alert(test);
     
    // Fonction appelé lors de l'événement onload du body
    function InitEnvironment()
    {
      html_element  = new HTMLElement();
    }
     
     
    function ChangeBorderColor(color, ind_ssheet, ind_rule, ssheet, rule)
    {
      html_element.SetRuleReference(ind_ssheet, ind_rule);
      html_element.box_properties.SetBorderColor(color);
    }
    Merci d'avance pour vos éventuelles réponses, d'habitude j'essaie de me débrouiller seul, mais là c'est trop mystique.

    Bonne soirée à vous

    ps : si je n'ai pas été clair sur quoi que ce soit, n'hésitez pas à me demander des précisions merci

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    Comment charges tu tes fichiers scripts supplémentaires ? Via Ajax et en insérant une balise script dans le header ?

    ERE

  3. #3
    Membre à l'essai
    Homme Profil pro
    Consultant technique dans les ERP
    Inscrit en
    Octobre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant technique dans les ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Chargement des fichiers javascript supplémentaires
    Bonjour,

    Désolé de cette réponse tardive, je pensais recevoir un mail si une réponse avait été donnée, mais apparemment non.

    En effet, je charge les autres fichier javascript appartement à une même bibliothèque en insérant des balises script dans le header via javascript.

    De cette manière, l'utilisateur n'a pas à se soucier des autres fichiers autre que le principal pour utiliser la bibliothèque.


    Mais finalement j'ai résolu le problème. J'ai restructurer le code d'appel, et maintenant cela marche sur Firefox, Opera et IE.

    Si cela t'intéresses, je peux t'envoyer le dossier de mon projet en cours. C'est un peu brouillon car c'est en développement, mais peut-être auras-tu des conseils à me donner sur la structuration des applications javascript .

    Merci beaucoup, bonne journée

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Salut,
    je pensais recevoir un mail si une réponse avait été donnée, mais apparemment non
    Regarde en-dessous de l'envoie de message dans options supplémentaires, tu trouveras "Suivi de la discution" et tu choisis le type de notification.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Consultant technique dans les ERP
    Inscrit en
    Octobre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant technique dans les ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Ha merci beaucoup

    Je ne suis vraiment pas un habitué des forums

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

Discussions similaires

  1. Un comportement étrange (de plus ?) sur variable
    Par Guigsounet dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 08/07/2010, 20h14
  2. Réponses: 1
    Dernier message: 23/03/2009, 20h42
  3. Comportement étrange sur un bulleted list
    Par stroumfs dans le forum ASP.NET
    Réponses: 1
    Dernier message: 14/10/2008, 15h51
  4. [2.0] comportement étrange sur condition sur string.indexOf
    Par franculo_caoulene dans le forum VB.NET
    Réponses: 26
    Dernier message: 18/06/2008, 12h09
  5. Comportement étrange ksh sur linux
    Par hugo123 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 09/08/2006, 10h55

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