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 :

Portée d'une variable globale


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 49
    Points : 41
    Points
    41
    Par défaut Portée d'une variable globale
    Bonjour,

    Pour éclaircir mon code, j'essaie de déclarer dans un fichier "global.js" des variables qui reviennent dans plusieurs de mes scripts.

    J'ai ceci dans l'en tête de mes pages webs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    		<SCRIPT language="JavaScript" src="global.js"></SCRIPT>
    		<SCRIPT language="JavaScript" src="monscript.js"></SCRIPT>
    Dans "monscript.js", je souhaite appeler des variables déclarées dans "global.js". Par exemple pour les accents, j'ai ceci dans "global.js" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var aGrave = String.fromCharCode(224); // à
    var eAigu  = String.fromCharCode(233); // é
    ...
    Et dans mes fonctions de "monscript.js", j'ai des alertes qui font appel à ces variables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    alert("Test de code accentu"+eAigu+".");
    Et ça ne fonctionne pas, 'eAigu' est indéfini quand je teste mes pages sous IE6. Bien sûr, quand je place la déclaration de la variable directement dans "monscript.js", ça passe, mais j'aimerais avoir une solution générique. Est-ce possible ? Merci pour tout conseil.

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    c est etrange ca devrais marcher, essayes en mettant type='text/javascript' au lieu de language et script en minuscules

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 49
    Points : 41
    Points
    41
    Par défaut
    Merci pour ta réponse.
    Ca ne change rien, variable toujours indéfinie...

  4. #4
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    window.onload = function(){
    alert("Test de code accentu"+eAigu+"."); 
    }
    car il faut certainement que ta page soit chargée pour accéder a tout

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 49
    Points : 41
    Points
    41
    Par défaut
    Je ne suis pas sûr d'avoir bien compris ton conseil.

    J'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <html>
      <head>
        <script language="JavaScript" src="global.js"></script >
        <script language="JavaScript" src="monscript.js"></script > 
      </head>
    <body onload="alert('Test de code accentu'+eAigu)">
    ...
    Pas d'alerte au chargement de la page, mais la même erreur : 'eAigu' indéfinie.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 49
    Points : 41
    Points
    41
    Par défaut
    Bon j'ai fait un test ultime.

    J'ai ajouté mes variables dans la partie <head> de ma page.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <html>
      <head>
        <script>
        var aGrave = String.fromCharCode(224); // à
        var eAigu  = String.fromCharCode(233); // é
        ... 
        </script>
      <head>
    <body onload="alert('texte accentu'+eAigu)">
    ...
    Le message d'alerte s'affiche bien au chargement de la page, avec l'accentuation correcte.

    J'ai pris ces déclarations de variable, que j'ai mises dans un fichier script "test.js". Le fichier "test.js" contient donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        var aGrave = String.fromCharCode(224); // à
        var eAigu  = String.fromCharCode(233); // é
        ...
    Le code de ma page web est devenu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <html>
      <head>
        <script language="JavaScript" src="test.js"></script> 
      <head>
    <body onload="alert('texte accentu'+eAigu)">
    ...
    Et là le message d'alerte n'apparaît pas au chargement de la page. J'obtiens l'erreur "'eAigu' est indéfini".
    Il semblerait donc qu'on ne puisse pas utiliser de variables globales déclarées dans un fichier js, celles-ci doivent apparemment être écrites dans le code de la page. Ca m'étonne un peu mais bon...

  7. #7
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <html>
      <head>
        <script type="text/javascript" src="test.js"></script>
      <head>
    <body onload="alert('texte accentu'+eAigu)"> 
    </body>
    </html>
    moi ca ca marche
    ie et ffx ...

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 49
    Points : 41
    Points
    41
    Par défaut
    Bon je suis reparti de fichiers vierges pour tester.

    J'ai donc créé deux fichiers minimaux : test.html et test.js

    Voici le code pour test.html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <html>
      <head>
        <script language="javascript" src="test.js"></script> 
      </head>
      <body onload="alert('Texte accentu'+eAigu)">
      </body>
    </html>
    Et le code pour test.js :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var eAigu=String.fromCharCode(233);
    Et effectivement ça fonctionne très bien sous IE et Firefox.


    Je penchais donc pour un problème de cache ou quelquechose du genre avec mon navigateur. J'ai donc vidé le cache et l'historique d'IE, et j'ai fait un test de ma page avec un fichier script séparé contenant uniquement mes déclarations de variables accentuées, et c'est passé !! J'ai ensuite remis mes déclarations dans le fichier script de base (global.js), et c'est bien passé.
    Je vide pourtant assez régulièrement mon cache...Je sais pas si c'est vraiment ça qui a débloqué la chose...Bref c'est résolu.

    Merci pour ton aide siddh !

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

Discussions similaires

  1. [Sécurité] Activation d'une variable globale
    Par Ricou13 dans le forum Langage
    Réponses: 3
    Dernier message: 28/09/2005, 10h24
  2. [quai debutant] : creation d'une variable globale.
    Par bapman344 dans le forum Access
    Réponses: 4
    Dernier message: 23/06/2005, 11h33
  3. Réponses: 5
    Dernier message: 25/05/2005, 22h29
  4. Comment déclarer une variable globale
    Par davkick dans le forum C
    Réponses: 13
    Dernier message: 20/05/2005, 18h50
  5. utilisation d'une variable globale
    Par ZZ dans le forum ASP
    Réponses: 3
    Dernier message: 03/12/2003, 19h11

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